Monday 19 June 2017

UVA 10924 solve
প্রব্লমেঃ Prime word

ইনপুট ঃ ইনপুট হিসেবে আমার একটা স্ট্রিং নিবো। ইনপুট নিবো ইন্ড অফ ফাইল পর্যন্ত।

আউটপুটঃ স্ট্রিংটি প্রাইম নাকি নট প্রাইম সেইটা প্রিন্ট করবো ।

সল্ভিং টেকনিক ঃ
আমরা একটি স্ট্রিং নিবো । স্ট্রিংটি প্রাইম কিনা সেটা চেক করার জন্য আমাদের সম্পূর্ণ স্ট্রিং এর আস্কি ভ্যালু দরকার।  এইজন্য আমার স্ট্রিং এর প্রতিটা ক্যারাক্টারের আস্কি ভ্যালু যোগ করবো। পরে দেখবো যোগফলটা কি প্রাইম নাকি। যদি প্রাইম হয় তাহলে স্ট্রিংটিও প্রাইম অন্যথায় প্রাইম না।

NB. Don't copy the code and paste in judge. you may just get logic from code.


আমার কোড ঃ


#include<bits/stdc++.h>
using namespace std;

bool isprime(int n)
{
    if(n==0)
        return false;
    else if(n==1)
        return true;
    else
    {
        for(int i=2;i<n;i++)
        {
            if(n%i==0)
                return false;
        }
        return true;
    }
}
int main()
{
    int sum=0;
    string s;
    while(getline(cin,s))
    {
        for(int i=0;i<s.size();i++)
        {
            if((s[i]>='a'&&s[i]<='z'))
               {
                   sum+=(int)s[i]-96;
               }
                if((s[i]>='A'&&s[i]<='Z'))
                {
                    sum+=(int)s[i]-38;
                }
        }
        if(isprime(sum)==1)
        {
            cout<<"It is a prime word."<<endl;
            sum=0;
        }
        else if(isprime(sum)==0)
        {
            cout<<"It is not a prime word."<<endl;
            sum=0;
        }
    }
    return 0;
}


UVA 11875 solve:

প্রব্লেমঃ Brick games

ইনপুটঃ প্রথমে টেস্টকেস ইনপুট নিতে হবে। টেস্টকেসের সংখ্যা ১০০ এর বেশি হবে না। প্রত্যেকটা টেস্টকেসের জন্য একটা করে বিজোড় সংখ্যা নিবো যেইটা প্লেয়ারদের সংখ্যা নির্দেশ করে। পরে প্রত্যেকটা প্লেয়ারদের বয়স নিবো অ্যাসেন্ডিং অথবা ডিসেন্ডিং অর্ডারে।

উদাহরণঃ
     ১                                         //টেস্ট কেস
    ৫                                         //প্লেয়ারদের সংখ্যা
   ১৪,১৫,১৬,১৭,১৯,               // ৫জন প্লেয়ারের বয়স

সল্ভিং টেকনিক ঃ

প্রথমে আমারা প্লেয়ারদের বয়সগুলা একটা অ্যারেতে রাখবো। পরে আমরা অ্যারেটাকে সর্ট করে নিবো। সর্টেট অ্যারের মিড ভ্যালু বের করবো এবং এইটাই হবে কেপ্টেনের বয়স।

NB: Don't copy the code and paste in judge. you may just get logic from my code. Try yourself.

আমার কোড ঃ

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int test,num,i=1;
    cin>>test;
    while(test--)
    {
        int num,age;
        cin>>num;
        int player[num];
        for(int i=0;i<num;i++)
        {
            cin>>player[i];
        }
        int n=sizeof(player)/sizeof(player[0]);
        sort(player,player+n);
        int mid=player[n/2];
        cout<<"Case "<<i<<": "<<mid<<endl;
        i++;
    }
    return 0;
}

Wednesday 14 June 2017

UVA 11192 Solution: Group reverse

Key point: প্রবলেমটাতে বলা হয়েছে একটা স্ট্রিং দেওয়া থাকবে যেইটা সর্বচ্চো ১০১ হবে। একটা ইন্টিজার নাম্বার দেওয়া থাকবে যেইটা স্ট্রিংটাকে একটা কয়েটা গ্রুপে ভাগ করবে। প্রতিটা ভাগকে রিভার্স করে প্রিন্ট করতে হবে।
যেমনঃ Ruhulamin এই স্ট্রিংটার সাইজ ৯। এখন একটা ইন্টিজার নিলাম ৩ তাহলে গ্রুপ সংখ্যা হবে ৯/৩=৩ অর্থাৎ স্ট্রিংটা এই রকম হবে Ruh ula min. আখন এইটাকে রিভার্স করলে হবে hurlaunim.

কোডিংঃ


#include<bits/stdc++.h>
using namespace std;
int main()
{
   int n;
   while(scanf("%d",&n)==1)
   {
       int l,ngroup;
       if(n==0)
        break;
       char s[110];
       getchar();
       cin>>s;
       l=strlen(s);
       ngroup=l/n;
       for(int i=1;i<=n;i++)
       {
           int j=i*ngroup;
           int t=ngroup;
           while(t--)
           {
               cout<<s[--j];
           }
       }
       cout<<endl;
   }
   return 0;
}

Monday 5 June 2017

UVA 12503 Solution:

আইডিয়াঃ আমারা প্রথমে একটা ক্যারেক্টার অ্যারে নিবো। রোবটটি বামদিকে গেলে মান হবে -১ এবং ডানদিকে গেলে মান হবে +১। সুতরাং Left অর্থাৎ ক্যারেক্টার অ্যারের ০ ইনডেক্সে যদি  L হয় তাহলে মান -১ করে বাড়াবো এবং Right   অর্থাৎ ক্যারেক্টার অ্যারের ০ ইনডেক্সে যদি  R হয় তাহলে মান +১ করে বাড়াবো. same as ith এর জন্য পূর্ববর্তী ইন্সট্রাকশন অনুযায়ী +১ অথবা -১ যোগ করবো।


কোডঃ



#include<bits/stdc++.h>
using namespace std;
int main()
{
    int test,step,result,e,ar[101];
    char c[20];
    cin>>test;
    while(test--)
    {
        cin>>step;
        result=0;
        for(int i=1;i<=step;++i)
        {
            scanf("%s",c);
            if(c[0]=='L')
            {
                result-=1;
                ar[i]=-1;
            }
            else if(c[0]=='R')
            {
                result+=1;
                ar[i]=1;
            }
            else
            {
                scanf("%s%d",c,&e);
                result+=ar[e];
                ar[i]=ar[e];
            }
        }
        cout<<result<<endl;
    }
    return 0;
}

Sunday 4 June 2017

UVA 483 Solve:


প্রব্লেমঃ প্রব্লেমটাতে বলা হয়েছে একটা বাক্যের মাজে কয়েকটা শব্দ আছে। আউটপুট হিসেবে প্রতিটা শব্দকে রিভার্স অর্ডারে দেখাতে হবে।

সমাধানঃ সম্পূর্ণ বাক্যকে একটা স্ট্যাকের ভিতরে রাখাবো। যখন আমরা স্পেস অথবা নিউলাইন পাবো  তখন স্ট্যাক থেকে বের করবো।
প্রব্লেমটা শলভ করার জন্য স্ট্যাক সম্পর্কে ভালো ধারণা থাকতে হবে। Stack

কোডঃ

#include<cstdio>
#include<stack>
using namespace std;
stack<char>s;
int main()
{
    char c;

    while((c=getchar())!=EOF)
    {
        if(c==' '||c=='\n')
        {
            while(s.size()!=0)
            {
                putchar(s.top());
                s.pop();
            }
            putchar(c);
        }
        else
        {
            s.push(c);
        }
    }
    return 0;
}