Thursday, September 14, 2017

577A - Multiplication Table Codeforces Problem Solution In (C++, C#) & Logic

http://codeforces.com/problemset/problem/577/A

খুবই সহজ একটা সমস্যা , বাট - দেখে একটু কঠিন মনে হলেও , একটু চিন্তা করলেই কিন্তু জিনিসটা পরিষ্কার হয়ে যাবে , যাই হোক তোমায় দুইটা ভ্যালু দেয়া থাকবে  । । তোমায় একটা টেবিল এ  Row 
& Column  এমনভাবে সাজাতে হবে যেনো -- প্রতিটা ইনডেক্স এর মান হবে , ওই ইনডেক্স এর কলাম ও রো নাম্বার এর গুণফল । । যেমন ৬ ও ১২ এর ক্ষেত্রে টেবিলটা কেমন হবে ?? দেখে নেই ---


এখানে , কিভাবে সংখ্যাগুলো বসলো ?? চলো - ২ নাম্বার সারি'র সংখ্যাগুলি নিয়ে আলোচনা করে ফেলি  । । ধরে নেই যে -- কলাম সংখ্যা  i  দিয়ে ও রো সংখ্যা  j   দিয়ে দিয়ে প্রকাশ করি । তাহলে ,


2                        4                        6                             8                      10                                    12
i=1 & j=2        i=2 &j=2        i=3&j=2              i=4 & j=2           i=5 & j=2                 i=6 & j=2
i x j=2             i x j= 4           i x j= 6                   i x j= 8                i x j= 10                     i x j = 12

আসলে ঠিক এইভাবেই পুরো টেবিল সাজানো হয়েছে । এখন , সমাধান করার সময় আবার ভেবো না  যে , এই টেবিল'তা প্রথমে জেনারেট করে , তারপর তুমি -- দেখবে ১২ কতোবার আছে ?? যতোবার আছে , সেই সংখ্যা'টা প্রিন্ট করবে । এখানে , একটু মাথা খাটালেই বুঝবে যে -- আমাদের পুরো টেবিল না সাজিয়েই বুঝতে পারবো যে - ১২ কতোবার জেনারেট  হয়েছে  । ।

এখানে , তোমায়  এর মান দেয়া আছে  ৬  - তাহলে , আমরা যদি -- ১২ কতোবার আছে ?? সেটা বের করতে চাই , তাহলে আমরা যদি  ১ থেকে ৬ অবদি সবগুলো সংখ্যা দিয়ে চেক করে দেখি কোনটা কোনটা দিয়ে ১২ নিঃশেষে বিভাজ্য যায় ও ভাগফল ৬ এর কম হয় , তাহলেই কিন্তু , মোট ১২ এর সংখ্যা পেয়ে যাবো । । কারণ , আমাদের যেহেতু -- n x n ম্যাট্রিক্স এর টেবিল বানাবো ,  সুতরাং
, কলাম ও রো এর সংখ্যা ৬ ছারাবে না তাই , ১ থেকে  n পর্যন্ত থাকা  ইনডেক্স দিয়ে ১২ কে  ভাগ করলে , ভাগফল অবশ্যই ৬ এর কম হবে । । যাই হোক , নিজে নিজে একটু চিন্তা করলে ক্লিয়ার হবে ।  চলো কোড দেখে আসি এইবার ..................



IN C++ LANGUAGE......................

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

int main()

{
    int n,a,count=0;
    cin>>n>>a;
    for(int i=1;i<=n;i++)

    {
        if(a%i==0 && (a/i)<= n)

        {
            count++;
        }

    }

    cout<<count<<endl;

    return 0;
}


IN C# LANGUAGE...........................


using System;

class Programm
{
static void Main()
{

string s=Console.ReadLine();

string[] values=s.Split(' ');

int n=int.Parse(values[0]);

int a=int.Parse(values[1]);

int count=0;

for (int i=1;i<=n;i++)

{
if(a%i==0 && (a/i)<=n)
{
count++;
}
}
Console.WriteLine(count);
}
}






Wednesday, September 13, 2017

556A. Case of the Zeros and Ones Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/556/A

খুবই সহজ একটা প্রোবলেম , তোমায় একটা স্ট্রিং দেয়া থাকবে । । স্ট্রিং-এ শুধু ১ /০ থাকবে । এছাড়া
কিছুই থাকবে না  ।। এখন ঘটনা হলো -- তোমায় স্ট্রিং এ যখনই ১ আর ০ পাশাপাশি থাকবে -- তখনই
পাশাপাশি থাকা ১ আর ০ ভ্যানিস করে দিতে হবে , অবশেষে -- স্ট্রিং এর লেংথ কতো হয় ?? সেটা তোমায় প্রিন্ট করতে হবে । চলো , একটা উদাহরন দেখে নেই ----

 111011101 > 11  11  1  \\  তাহলে ০ গুলি উঠে গিয়ে এখন লেংথ হলো মোট ৫ । যেখান থেকে -
                                                    ০ আর ১ উঠে গেছে ,সেই যায়গা গুলো ফাকা আছে বোঝার সুবিধার
                                                    জন্য ।

তো আমাদের একটা সহজ উপায় আছে , সেটা হলো - প্রথমে কয়টা ১ আর ০ আছে , সেটা বের করে নেয়া । এখানে , ১ এর পরিমাণ হলো --  ৭ টা আর ০ দুইটা । তাইলে , আমি বুঝতেই পারছি যে -- ০ আছে ১ এর চেয়ে কম , এর মানে  ০ আর ১ উঠিয়ে দিলে ০ শেষ হয়ে গেলেও ১ শেষ হবে না , তাই না ??  এখন , ০ যে কয়টা আছে , তার ডাবল সংখ্যক ক্যারেক্টার এই স্ট্রিং থেকে বাদ দিতে হবে , কারণ প্রত্যেকটা ০ উঠে যাবার সময় , একটা করে ১কেও সাথে করে  উঠিয়ে নিয়ে যাবে ।

তো যাই হোক , ০ এর সংখ্যা বেশি হলেও ১ এর সংখ্যাকে ডাবল করতে হতো ------

চলো , কোড দেখি এইবার --------------

IN C++ LANGUAGE...............

#include <iostream>
#include <string>
#include<math.h>
using namespace std;

int main()
{
    int count=0,l,rount=0;
    cin>>l;
   string s;
   cin>>s;
   for(int i=0;i<l;i++)
   {
       if(s[i]=='1')
        count+=2;
       else
        rount+=2;
   }
   cout<<l-min(count,rount)<<endl;
   return 0;
}
 
IN C# LANGUAGE.........
 
using System;


namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)

        {
           
    int count=0,l,rount=0;
    l=Convert.ToInt32(Console.ReadLine());
   string s=Console.ReadLine();
   for(int i=0;i<l;i++)
   {
       if(s[i]=='1')
        count++;
       else
        rount++;
   }

   
   int q=0;
   if(count>rount)
   {
        q=rount;
   } 
   else{
       q=count;
   }
   Console.WriteLine((l-2*q));
   Console.ReadLine();
}

        }
    }
  

25A - IQ test Codeforces Problem Solution In(C++,C#) & Logic

http://codeforces.com/problemset/problem/25/A

এটা খুবই সোজা একটা সমস্যা । তোমায় কিছু সংখ্যা দেয়া থাকবে । যদি , সংখ্যাগুলির ভেতরে --
জোড় সংখ্যার আধিক্য বেশি হয়ে থাকে , তাহলে - তোমায় বিজোড় সংখ্যা ওই রাশির ভেতরে  কততম পজিশনে আছে ?? সেটা , বের করতে হবে ।। আর যদি , ঠিক উল্টোটা হয় , অর্থাৎ - যদি সংখ্যাগুলির ভেতরে যদি -- বিজোড় সংখ্যার আধিক্য বেশী হয় । তাহলে , তোমায় জোড় সংখ্যা ওই রাশির ভেতরে
কততম পজিশনে আছে ?? সেটা বের করতে হবে । ।

চলো , কোড দেখে আসি এইবার ----------------


IN C++ LANGUAGE.................

#include<stdio.h>
int main()
{
    int n,i,p,t1=0,s=0,k,t2=0;
    scanf("%d",&n);
    int a[100];
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]%2==0)
        {
            t1++;
        }
        else{
            t2++;
        }
    }
    for(i=1;i<=n;i++)
    {
        if(t1>t2)
        {
            if(a[i]%2!=0)
            {
                k=i;
            }
        }
        else{
            if(a[i]%2==0)
               {
                   k=i;
               }
        }
    }
    printf("%d\n",k);

}
 

IN C# LANGUAGE...................

using System;


namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)

        {

            int i,t1=0,t2=0;
            int n=Convert.ToInt32(Console.ReadLine());
            int[] a=new int[100];
            string str = Console.ReadLine();
            string[] values = str.Split(' ');

    for(i=0;i<n;i++)
    {
       int b=0;
       bool ok=int.TryParse(values[i],out b);
       if(ok)
       {
           a[i] = b;
       }
        if(b%2==0)
        {
            t2++;
        }
        if(b%2!=0)
        {
            t1++;
        }
    }

    int k=0;
    for(i=0;i<n;i++)
    {
        if(t1>t2)
        {
            if(a[i]%2==0)
            {
                k=i;
            }
        }
        else{
            if(a[i]%2!=0)
               {
                   k=i;
               }
        }
    }
    Console.WriteLine("{0}",k+1);
    Console.ReadLine();
        }
    }
}
 


Sunday, September 10, 2017

scanf যেভাবে কাজ করে

আমরা যারা  Programming  এর  P  এর নাম শুনেছি , তারা অবশ্যই  scanf  ফাংশনের সাথেও বেশ ভালোভাবে পরিচিত । যখন আমরা ইউসার এর কাছ থেকে কোনো ইনপুট নিতে চাই - তখনই আমরা
এই ফাংশন'টি ব্যবহার করে থাকি  । ।  এখানে , আসলে কি ঘটনা ঘটে ?? সেটা ছোট্ট কয়েকটি কথায় বুঝে নেই ------- 

int a ;
scanf("%d",&a):

আমরা  int d  লিখার  সাথে  সাথে ,  মেমোরিতে  4 byte জায়গার মেমোরি  a এর নামে ,  অটোমেটিক ব্লকড হয়ে যাবে ।  এখন আমরা  , যখন --- কোনো কিছু ইনপুট থেকে নেবো , তখন কিন্তু - সেই মান'টিকে
a এর নামে মেমোরি'র যে  জায়গা ব্লকড করা হয়েছে , সে জায়গা'র অ্যাড্রেস-এ ঢুকানোই  আমাদের দরকার । । সেই জন্যই আমরা  "&" চিহ্নটি ইউস করি ।। এই চিহ্নটি , আমাদের ওই মেমোরির অ্যাড্রেস'টি স্পেসিফাই করে ।

                                         scanf("%d",&a) দ্বারা তাহলে বুঝি , int ডেটা টাইপের একটা  ভ্যালু
 ইনপুট হিসেবে নিয়ে  a এর নামে মেমোরি'র যে  জায়গা  বরাদ্দ আছে , সেখানে ঢুকিয়ে দেয়া ।

এর পরে'র আলোচনায়  আমরা বিশ্লেষণ করবো  ,  Array / String  এর ক্ষেত্রে কি ঘটে ?????

Tuesday, September 5, 2017

705A - Hulk Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/705/A

Input
1
Output
I hate it

Input
2
Output
I hate that I love it

Input
3
Output
I hate that I love that I hate it
 
 
এই উদাহরণ , দেখেই বুঝা যায় যে - আসলে , আমাদের কি করতে হবে ??? এটা ঠিক বোঝাবো না --
নিজে নিজে প্রথমে ট্রাই করো , দেখো - কোনো উপায় হয় কি না ??? তারপর , কোড দেখো ------
চলো কোড দেখে আসি ---------- 
 
 
 
 
IN C++ LANGUAGE...........
 
#include<cstdio>
#include<iostream>
using namespace std;

int main()
{
    int n;
    while (cin>>n)
    {
        for (int i=1;i<=n;i++)
        {
            if (i%2)
                cout<<"I hate ";
            else
            cout<<"I love ";
            if (i==n)
            cout<<"it"<<endl;
            else
            cout<<"that ";
        }
    }
    return 0;
}  
 
 
IN C# LANGUAGE..........
 
using System;

public class Test
{
 
 public void print(int n)
 
 {
  
 for (int i=1;i<=n;i++)
        {
            if (i%2==1)
                Console.Write("I hate ");
            else
            Console.Write("I love ");
            if (i==n)
            Console.WriteLine("it");
            else
            Console.Write("that ");
        }
 
 }

 public static void Main()
 
 {
  
    int n=Convert.ToInt32(Console.ReadLine());
    Test q=new Test();
    q.print(n);
    }
} 
  

734A. Anton and Danik Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/734/A

Anton and Danik দুই বন্ধু , মিলে - একটা গেইম খেলছে , যেটা স্ট্রিং আকারে দেয়া আছে ।  ধরো দেয়া    আছে  ,               
6
ADAAAA

এর মানে , তারা মোট ৬ টা গেইম খেলেছে এবং তার মধ্যে - কে কোন গেমে জিতেছে ,সেটা 
ADAAAA দ্বারা প্রকাশ করা আছে , তুমি বুঝতেই পারছো যে , A বেশীবার আছে ,সুতরাং  Anton  বেশীবার জিতেছে
তাহলে তোমায়   Anton  প্রিন্ট করতে হবে । আর না হলে , যদি অপরজন বেশিরভাগ গেইম জিতে যায় , তাহলে ওর 
নাম প্রিন্ট করবে , আর যদি দুইজনেই সমান পরিমাণ জিতে যায় - তাহলে  
Friendship প্রিন্ট করবে । আর কথা না বাড়াই , চলো --- কোড দেখে আসি ,
 
IN C++ LANGUAGE..........
 
#include <bits/stdc++.h>

    using namespace std;

int main()
{
    int count=0,rount=0,i,n;
   string joy;
   cin>>n;
   cin>>joy;
    for(i=0;i<n;i++)
    {
        if(joy[i]=='A')
            count++;
        else
            rount++;
    }
    if(count>rount)
        cout<<"Anton"<<endl;
        else if(rount>count)
            cout<<"Danik"<<endl;
        if(count==rount)
        cout<<"Friendship"<<endl;
}
 
IN C# LANGUAGE..........
 
using System;

public class Test
{
 
 public void print(string joy,int n)
 {
  int count=0,rount=0;
   for(int i=0;i<n;i++)
    {
        if(joy[i]=='A')
            count++;
        else
            rount++;
    }
    if(count>rount)
        Console.WriteLine("Anton");
        else if(rount>count)
            Console.WriteLine("Danik");
        if(count==rount)
        Console.WriteLine("Friendship");
 }

 public static void Main()
 
 {
  
 int n=Convert.ToInt32(Console.ReadLine());
 string joy=Console.ReadLine();
 Test r=new Test();
    r.print(joy,n);
}
} 
  

Monday, September 4, 2017

749A. Bachgold Problem Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/749/A

এটা খুবই মজার একটি সমস্যা । তোমায় একটা , সংখ্যা দেয়া থাকবে । তোমায় , সেই সংখ্যাকে --- সবচেয়ে বেশি সংখ্যক প্রাইম সংখ্যার যোগফল আকারে প্রকাশ করতে হবে । যেমন , তোমায় যদি দেয়া থাকবে  8 , তাহলে  5+3 এইভাবেও প্রকাশ করা যায়   , আবার  2+2+2+2  আকারেও প্রকাশ করা যায় ।
কিন্তু  2+2+2+2 কেই তোমায় বেছে নিতে হবে , কারণ - সবচেয়ে বেশি প্রাইম সংখ্যা এটাতে আছে ।

তাহলে , কিছুটা আমরা বুঝতেই পারছি যে কোনো সংখ্যাকেই কিন্তু , আমরা 3 ও 2 এর যোগফল আকারে প্রকাশ করতে পারবো , তাই না ?? নিজে কয়েকবার ট্রাই করেই দেখো । যেমন , 11 =  2+2+2+2 +3 |
এর মানে , আমরা প্রিন্ট করার সময় শুধু ২ ও ৩  প্রিন্ট করতে হবে , কিন্তু । কয়টা , প্রিন্ট করবো ? সেটা নির্ভর করবে --- তোমায় দেয়া সংখ্যাটি কি জোড় নাকি বিজোড় ??? তোমায় যদি , জোড় সংখ্যা দেয়া থাকে --- তাহলে , শুধু তার অর্ধেক পরিমাণ ২ প্রিন্ট করলেই আমাদের কাজ শেষ , আর যদি -- বিজোড় সংখ্যা দেয়া থাকে - তাহলে , তার  অর্ধেক পরিমাণ ২ প্রিন্ট করে , সাথে আরো একটা ৩ প্রিন্ট করলেই আমাদের কাজ হয়ে যাবে । চলো কোড দেখে আসি এবার ------------------

IN C++ LANGUAGE..............

 #include<bits/stdc++.h>

 using namespace std;

int main()
{
    int k;
    cin>>k;
    cout<<k/2<<endl;
    if(k%2==0)
    {
        for(int i=0;i<(k/2);i++)
        {
            cout<<"2"<<" ";
        }
    }
    else
    {
        for(int i=0;i<((k/2)-1);i++){

            cout<<"2"<<" ";
        }

            cout<<"3"<<" ";
    }
    cout<<endl;
}
 


IN C# LANGUAGE..........................


using System;

public class Test
{

    public static void Main()
   
    {
       
    int k=Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(k/2);
    if(k%2==0)
    {
        for(int i=0;i<(k/2);i++)
        {
            Console.Write("2 ");
        }
    }
    else
    {
        for(int i=0;i<((k/2)-1);i++){

            Console.Write("2 ");
        }

            Console.WriteLine("3 ");
    }
}
}

825A. Binary Protocol Codeforces Problem Solution In(C++,C#) & Logic

http://codeforces.com/problemset/problem/825/A

খুব সহজ একটা সমস্যা  , তোমায় --- একটা স্ট্রিং দেয়া থাকবে , সেই স্ট্রিং'টি শুধুমাত্র ১ / ০ দিয়ে গঠিত
তোমায়  , পুরো স্ট্রিং এর ক্যারেক্টার চেক করতে হবে ,সাথে সাথে মোট ১ এর সংখ্যা গণনা করতে হবে  ও যখনই ০ আসবে , তখনই  কয়টা ১ পেয়েছো , এ অবদি , সেটা প্রিন্ট করতে হবে ।  । তারপর , আবার ১ নতুন করে কাউন্ট করবা , আর ০ পাইলে - সেটাআবার প্রিন্ট  করতে হবে  । এভাবেই তোমায় পুরো কোড ইমপ্লিমেন্ট করতে হবে ।  ।খুবই সহজ একটা কাজ ------------------------------

চলো ,কোড দেখি এইবার -------

IN C++ LANGUAGE..................


 #include<bits/stdc++.h>

 using namespace std;

int main() {
    cin.sync_with_stdio(false);
    string str;
    int n;
    int num;
    while (cin >> n) {
        cin >> str;
        num = 0;
        for (int i = 0; i < n; i++) {
            if (str[i] == '1') {
                num++;
            }
            else {
                cout << num;
                num = 0;
            }
        }
        cout << num << endl;
    }
    return 0;
}
 



IN C# LANGUAGE....................

 
using System;

public class Test
{

 public static void Main()
 
 {
  
          int n=Convert.ToInt32(Console.ReadLine());
          
         string str=Console.ReadLine();
         
         int num=0;
         
        for (int i = 0; i < n; i++) {
            if (str[i] == '1') {
                num++;
            }
            else {
                Console.Write(num);
                num = 0;
            }
        }
        Console.WriteLine(num);
 
 }
}

822A - I'm bored with life Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/822/A

খুবই মজার একটা ট্রিকি সমস্যা , তোমায় ২ টা সংখ্যা দেয়া থাকবে । তোমায় , সেই ২ টা সংখ্যার ফ্যাক্টোরিয়াল এর গ সা গু  বের করতে হবে ।।  ধরো , ২টা সংখ্যা আছে --  4 & 3  , তাহলে ---------
                                 
         4! = 4 . 3 . 2 . 1

         3!=  3 . 2 . 1  

এখন আমাদের কিন্তু , গ সা গু বের করার জন্য কোনো , ফাংশন ক্রিয়েট করতেই হবে না , চলো দেখে নেই - রহস্যা'টা আসলে কি ????
                    
                       4 . 3 . 2 . 1
4! /  3!  =  ................................... = 4   । কি , বুঝলে ??? বড়ো সংখ্যাটির ফ্যাক্টোরিয়াল সবসময় ছোট
                        3 . 2 . 1 

সংখ্যার ফ্যাক্টোরিয়াল দিয়ে নিঃশেষে বিভাজ্য হবে । তাহলে , যে সংখ্যা দুইটি -- দেয় থাকবে , আমাদের উত্তর হবে , ছোট সংখ্যা'টির  ফ্যাক্টোরিয়াল  । । তাও যদি  বুঝতে কষ্ট হয় , তাহলে একটু নিজে নিজে ট্রাই করে দেখো বিভিন্ন সংখ্যা নিয়ে আস্তে আস্তে বিষয়টি ক্লিয়ার হয়ে যাবে , আশা করি ---------------------
 চলো কোড দেখে নেই - এইবার ---------------

 IN C++ LANGUAGE......................

#include<bits/stdc++.h>

 using namespace std;

 int main()

 {
    
   int a, b;
   scanf ( "%d%d", &a, &b );
  int ans = 1;
  for ( int j = 1; j <= min( a, b ); j++ )
        {
            ans *= j;
        }
    printf ( "%d\n", ans );
 }

IN C# LANGUAGE.................

 using System;

public class Test
{
    public long min(long A,long B)
    {
        if(A>B)
        {
            return B;
        }
        else
        return A;
    }
    public static void Main()
   
    {
    Test r=new Test();   
    string s=Console.ReadLine();
    string[] values=s.Split(' ');
    long A=long.Parse(values[0]);
    long B=long.Parse(values[1]);
    long C=r.min(A,B);
    long ans=1;
    for(long i=1;i<=C;i++)
    {
        ans=ans*i;
    }
    Console.WriteLine(ans);
    }
}



832A - Sasha and Sticks Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/832/A

ধরো , আমি একটা  ডেস্ক এর উপরে মোট N টা লাঠি রাখবো ।। তারপর , আমি ও তুমি একবার একবার করে  প্রতিবারে ,  K টা লাঠি করে  সরিয়ে রাখবো । আর যেহেতু , আমিই এই খেলার প্রস্তাব করছি সুতরাং আমিই সবসময় শুরু করবো  ।।  এখন ধরো - একটা উদাহরণ দেই , যেমন ------------------

ডেস্ক- এ    আমি  রাখলাম   ১০ টা লাঠি  ,  আর  প্রতিবারে আমরা ৪টা করে লাঠি সরিয়ে রাখবো  । । ।
তো , প্রথমে আমি ৪ টি সরিয়ে রাখলাম ও তারপর বাকি থাকে ৬ টা ,তার ভেতরে তুমি সরিয়ে রাখবে আরো ৪ টা , তাহলে আর বাকি থাকলো ২ টা , এখন আমার পালা । কিন্তু , সরাতে গিয়ে দেখি -- ৪ টার কম আছে , সুতরাং - খেলা শেষ । ।  এখন , কে বেশিবার সরিয়ে রাখতে পেরেছে  ??? দুইজনেই সমান ,অর্থাৎ আমি জিততে পারি নি । তাহলে, তুমি প্রিন্ট করবে - "NO" | এখন তুমি একটু , ভাবো তো - এখানে
কে কতোবার সরানোর সুযোগ পাবে ??? এটার শর্ট-কার্ট কি করা যায় ??? হুম , N কে  K দিয়ে ভাগ করলেই , মোট কতবার সরানোর সুযোগ পাওয়া যাবে , সেটা বোঝাই যাবে ।  যেমন  N=10 & K=4 ।
তাহলে , মোট সরানোর ঘটনা ঘটবে , ১০/৪ = ২ বার  , প্রথম বার আমি সরাইছি ও দ্বিতীয় (শেষ) বার তুমি সরাইছো ।  এখন যে খেলাগুলোতে , আমি বেশিবার সরানোর সূযোগ পাবো , সেটাতেই আমায় প্রিন্ট করতে হবে --  "YES" , এখন ( N \ K) এর মান যদি বিজোড় হয় , তাহলে আমি জিতবো ও আর যদি জোড় হয় , তাহলে আমি কখনোই জিততে পারবো না । একটু মাথা খাটিয়ে লজিকটা চেক করে দেখো ।

চলো কোড দেখি এইবার

IN C++ LANGUAGE.............................

   #include <cstdio>
 
int main()

{
   
long long n, k;

scanf(“%I64d%I64d”, &n, &k);

puts((n / k) & 1 ? “YES” : “NO”);

return 0;

}



IN C# LANGUAGE........................

  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6.  
  7. {
  8. string str=Console.ReadLine();
  9. string[] values=str.Split(' ');
  10. long A=long.Parse(values[0]);
  11. long B=long.Parse(values[1]);
  12. long C=(A/B);
  13. if(C%2==0)
  14. {
  15. Console.WriteLine("NO");
  16. }
  17. else
  18. {
  19. Console.WriteLine("YES");
  20. }
  21. }
  22. }
     
     

 

Sunday, September 3, 2017

835A. Key races Codeforces Problem Solution In (C++,C#)& Logic

http://codeforces.com/problemset/problem/835/A

খুবই সহজ একটা সমস্যা , জাস্ট  ম্যাথমেটিক্যাল । আমি যদি , বলি - তোমায় , পরীক্ষা শুরু'র ঠিক T সময় পরে একটা কি-বোরড দেবো ও একটা পেজে কিছু টেক্সট থাকবে  , তোমায় শুধু  সেই টেক্সট গুলো টাইপ করতে হবে । আমি দেখতে চাই , তোমার টাইপিং ক্ষমতা কতো টূকু  ?? কিন্তু , তোমায় পরীক্ষা শেষ হবার ঠিক সময় আগে সবকিছু স্টপ করতে হবে । একটা ক্যারেক্টার লিখতে লিখতে তোমার সময় লাগে  V   সময় ও ওই টেক্সটে মোট ক্যারেক্টার আছে   S গুলি ।

তাহলে , তোমার মোট কতক্ষণ সময় লাগবে ??? মোট  2*T+ V*S সময় , তাইনা ???

এখন তোমায় , দুইজন ছেলের টাইপিং সম্পর্কিত তথ্যগুলি দেয়া থাকবে - তোমায় বলতে হবে কে প্রথম হবে ? আর কে দ্বিতীয় ?? অথবা ড্র ??? তুমি শুধু দুইজনের মোট সময় তুলনা করলেই সব ঝামেলা শষ

চলো ,  কোড দেখে আসি ............

IN C++ LANGUAGE........................

 
#include <bits/stdc++.h>
 
using namespace std;
 
 
 int main()
{
    int s,v1,v2,t1,t2;
    cin>>s>>v1>>v2>>t1>>t2;
    int a1 = v1*s+2*t1;
    int a2 = v2*s+2*t2;
    if(a1<a2)
        puts("First");
    else if(a1>a2)
        puts("Second");
    else
        puts("Friendship");
    return 0;
}
 
IN C# LANGUAGE............
 
 
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6.  
  7. {
  8. string str=Console.ReadLine();
  9. string[] values=str.Split(' ');
  10. int s=int.Parse(values[0]);
  11. int v1=int.Parse(values[1]);
  12. int v2=int.Parse(values[2]);
  13. int t1=int.Parse(values[3]);
  14. int t2=int.Parse(values[4]);
  15.  
  16. int a1 = v1*s+2*t1;
  17. int a2 = v2*s+2*t2;
  18.  
  19. if(a1<a2)
  20. Console.WriteLine("First");
  21. else if(a1>a2)
  22. Console.WriteLine("Second");
  23. else
  24. Console.WriteLine("Friendship");
  25. }
  26. }

837 A. Text Volume Codeforces Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/837/A


খুবই সহজ একটা প্রোবলেম , তোমায় প্রথম লাইনে একটা সংখ্যা দেয় থাকবে । তারপর , সে লেংথ বিশিষ্ট একটা স্ট্রিং পরের লাইনে দেয়া থাকবে  । ।  এখন এই স্ত্রীং -এ কয়েকটা শব্দ দেয়া থাকবে । ।

 এখন ,শব্দগুলোর মধ্যে  সবচেয়ে বেশীসংখ্যক বার বড় হাতের লেটার যেখানে আসবে - সেই সংখ্যাটা প্রিন্ট করতে হবে । । 

ধরো ,স্ট্রিং দেয়া থাকলো ---   TUmi AMAr Ami TOMAr  এখানে সবচেয়ে বেশিবার ক্যাপিটাল লেটার এসেছে শেষ এর শব্দে , 4 বার । এর মানে , আমায় প্রিন্ট করতে হবে 4  ।

চলো , কোড দেখি এইবার ------

IN C++ LANGUAGE............

    #include<iostream> 
    #include<cstdio> 
    using namespace std; 
    int main() 
    { 
        int n; 
        char s[205]; 
        while(cin>>n) 
        { 
            int sum=0,maxs=0; 
            getchar(); 
            gets(s); 
            for(int i=0;i<=n-1;i++) 
            { 
                if(s[i]>='A'&&s[i]<='Z') 
                    sum++; 
                if(s[i]==' '||i==n-1)    
                { 
                    if(sum>maxs)  
                        maxs=sum; 
                    sum=0;  
                } 
            } 
            cout<<maxs<<endl; 
        } 
        return 0; 
    } 

IN C# LANGUAGE......................


using System;

public class Test
{
    public static void Main()
   
    {
      
              int n=Convert.ToInt32(Console.ReadLine());
             
              int sum=0,maxs=0; 
             
              string s=Console.ReadLine();
             
              int l=s.Length;
             
            for(int i=0;i<=l-1;i++) 
            { 
                if(s[i]>='A'&&s[i]<='Z') 
                    sum++; 
                if(s[i]==' '||i==l-1)    
                { 
                    if(sum>maxs)  
                        maxs=sum; 
                    sum=0;  
                } 
            } 
            Console.WriteLine(maxs); 
    }
}

841 A. Generous Kefa Codeforces Probllem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/841/A

খুবই সহজ একটা সমস্যা  ,  যদি তুমি প্রোবলেম'টি বুঝতে পারো -- তোমায় প্রথম লাইনে দুইটা সংখ্যা দেয়া থাকবে ( n & k )  ।  তার পরের লাইনে একটা স্ট্রিং দেয়া থাকবে (যার লেংথ n )  । তোমায় মোট ডুপ্লিকেট সংখ্যা বের করতে হবে , যদি সেটা  k  এর চেয়ে বড়ো হয় , তাহলে প্রিন্ট করবে  "NO" আর না হলে প্রিন্ট করবে "YES"  | |  এখনো , মনে কোনো সংশয় থাকলে , প্রশ্নটা ভালো করে পড়ো আর সেটার সাথে আমার কথাগুলো মিলাও , আশা করি সব ক্লিয়ার হয়ে যাবে । ।

চলো কোড দেখি ,

IN C++ LANGUAGE..........


#include<bits/stdc++.h>

using namespace std;

const int maxn = 1000 + 7;

char s[maxn];

int main() {
    int n, k;
    scanf("%d %d", &n, &k);
    scanf("%s", s);
    for(int i = 0; i < n; ++i) {
        if(s[i] >= 'A' && s[i] <= 'Z')
            s[i] = s[i] - 'A' + 'a';
    }
    sort(s, s+n);
    int cnt = 1;
    for(int i = 1; i < n; ++i) {
        if(s[i] != s[i-1]) cnt = 1;
        else {
            cnt++;
            if(cnt > k) { printf("NO"); return 0; }
        }
    }
    printf("YES");
    return 0;
}

IN C# LANGUAGE..........

using System;

public class Test
{
    public static void Main()
    {
        string s=Console.ReadLine();
        string[] values=s.Split(' ');
        int a=int.Parse(values[0]);
        int b=int.Parse(values[1]);
        string str=Console.ReadLine();
        string lower=str.ToLower();
        int l=lower.Length;
        char[] array=new char[l];
        for(int i=0;i<l;i++)
        {
            array[i]=lower[i];
        }
        Array.Sort<char>(array);
        int count=1;
        bool joy=true;
        for(int j=1;j<l;j++)
        {
         if(array[j]!=array[j-1])
         {
             count=1;
         }
         else
         {
             count++;
             if(count>b)
             {
               joy=false;   
             }
         }
        }
        if(joy==false)
        {
            Console.WriteLine("NO");
        }
        else
        {
            Console.WriteLine("YES");
        }
       
    }
}

844A. Diversity Codeforces Problem Solution & Logic

http://codeforces.com/problemset/problem/844/A

তোমায়  একটা  স্ট্রিং  (s)  ও  একটা  সংখ্যা  (n) দেয় থাকবে ,  তোমায়  বলতে  হবে - সেই  স্ট্রিং  - এর  কয়টা ক্যারেক্টার   চেঞ্জ  করলে  ,  মোট n  টি  ডিস্ট্রিংক্ট  ( আলাদা  )  ক্যারেক্টার  পাওয়া সম্ভব  ????

তাহলে , ধরো - দেয়া আছে ,  Janam & n=5  তাহলে , Janam শব্দটার ভেতরে - ইতিমধ্যে 4  টা  আলাদা ক্যারেক্টার ( J , a , n , m)  আছে ,   তাহলে   5   টি   পূরণ   করতে   গেলে -    শুধুমাত্র   আর    একটা    Double  ক্যারেক্টার  (a)  এর জায়গায় অন্য আরেকটা বসিয়ে দিলেই মোট  ডিস্ট্রিংক্ট  ( আলাদা  )  ক্যারেক্টার হবে  5   টি । । সুতরাং উত্তর হবে  ১ টি ।

এখন ধরো ,  স্ট্রিং  (s) লেংথ এর চেয়ে n  এর মানই বেশি হইলো - তাহলে কিন্তু উত্তর হবে  impossible
চলো কোড দেখে আসি এইবার ------------------------

IN C# LANGUAGE.........................

using System;

public class Test
{
    public static void Main()
    {
        string s=Console.ReadLine();
        int n=Convert.ToInt32(Console.ReadLine());
        int l=s.Length;
        char[] array=new char[l];
        for(int i=0;i<l;i++)
        {
            array[i]=s[i];
        }
        Array.Sort<char>(array);
        int count=0;
        for(int j=1;j<l;j++)
        {
         if(array[j]!=array[j-1])
         {
             count++;
         }
        }
        count=count+1;
        if(n>l)
        {
            Console.WriteLine("impossible");
        }
        else
        {
            if((n-count)>0)
            {
                Console.WriteLine(n-count);
            }
            else
            {
                Console.WriteLine("0");
            }
        }
    }
}

Saturday, September 2, 2017

849A. Odds and Ends Codeforce Problem Solution In (C++,C#) & Logic

http://codeforces.com/problemset/problem/849/A

খুবই মজার একটা সমস্যা  ,  ধরো  -  তোমায় একটা সিকুয়েন্স দেয়া থাকবে , এখন সেখানে - সেই সিকুয়েন্স কে এমন বিজোড় সংখ্যক ভাগে ভাগ করতে হবে যেনো , প্রত্যেক ভাগের প্রথম ও শেষ সংখ্যা বিজোড় এবং সিকুয়েন্স এর লেংথ'ও যেনো বিজোড় হয়  ।।  ধরো , একটা উদাহরণ দেই  যেমন ----

               1 0 1 5 1  , এখানে একে মোট তিন'টা (বিজোড় সংখ্যক) ভাগে ভাগ করা যাবে যেখানে প্রথম ও 
শেষ সংখ্যা বিজোড় ও তার লেংথ'ও বিজোড় হয় ।। 
                          
                          (1 0 1) , (5) , (1) 
 
আশা  করি , কাহিনী কিছুটা হলেও পরিষ্কার ।। তো , তোমার কাজ হইলো - যদি , দেয়া সিকুয়েন্স এইভাবে প্রকাশ করা 
সম্ভব হয় - তাহলে প্রিন্ট করবে ,  Yes আর না হলে - No  || 

তো , এই তিন'টা শর্ত দিয়ে চেক করে যদি -কোনো সিকুয়েন্স ঠিক পাই , তাহলে - হ্যা আর না হলে না ।  । 

প্রথম সংখ্যা বিজোড় 
শেষ সংখ্যা বিজোড় 
সিকুয়েন্স এর লেংথ বিজোড় 

এই তিন'টি শর্ত দিয়ে চেক করে দেখবো , চলো কোড দেখি এইবার 
 
IN C++ LANGUAGE................... 
 


#include<bits/stdc++.h>

using namespace std;

#define N 510

int main() {
    cin.sync_with_stdio(false);
    int n, num[N];
    while (cin >> n) {
        for (int i = 0; i < n; i++) {
            cin >> num[i];
        }
        if (num[0] % 2 == 1 && num[n - 1] % 2 == 1 && n % 2 == 1) {
            cout << "YES" << endl;
        }
        else {
            cout << "NO" << endl;
        }
    }
    return 0;
}
 
 
IN C# LANGUAGE..................
 
 
 
using System;

public class Test
{
 public static void Main()
 
 {
  
      int n=Convert.ToInt32(Console.ReadLine());  
      int[] num=new int[n];
      string s=Console.ReadLine();
      string[] values=s.Split(' '); 
    
        for (int i = 0; i < n; i++) {
            num[i]=int.Parse(values[i]);
        }
        if (num[0] % 2 == 1 && num[n-1] % 2 == 1 && n%2==1) {
            Console.WriteLine("YES");
        }
        else {
            Console.WriteLine("NO");
        }
 }
}