শুক্রবার, ২৩ জুন, ২০১৭

UVA 10409 - Die Game

#include<bits/stdc++.h>
using namespace std;
main()
{
    long n,cs=1;
    while(cin>>n)
    {
        string s;
        if(n==0)
            break;
        else
        {
            long up=1, down=6, north=2, south=5, west=3, east=4,extra;
            while(n--)
            {
                cin>>s;
                if(s=="north")
                {
                    extra=up,up=south,south=down,down=north,north=extra;
                }
                else if(s=="south")
                {
                    extra=up,up=north,north=down,down=south,south=extra;
                }
                else if(s=="east")
                {
                    extra=up,up=west,west=down,down=east,east=extra;
                }
                else
                    extra=up,up=east,east=down,down=west,west=extra;
            }
            cout<<up<<endl;
        }
    }
}

UVA 12060 - All Integer Average

#include<stdio.h>
#include<math.h>
int main()
{
    long test,xx=1;
    while(~scanf("%ld",&test))
    {
        long i,s1,s=0,a,minus=0,d=0,p=0,p1=0,d1=0,d2=0,temp=0,g=0,count=0,count1=0,k=0,k1=0,k2=0,test1=0,b=0,b1=0,b2=0,b3=0,count2=0;
        if(test==0)
            break;
        for(i=0; i<test; i++)
        {
            scanf("%ld",&a);
            s=s+a;
        }
        if(s<0)
            minus=1;
        d=s/(double)test;
        p=s-d*test;
        printf("Case %ld:\n",xx++);
        if(p==0)
        {
            if(d>=0)
                printf("%ld\n",d);
            else if(d<0)
                printf("- %ld\n",d*(-1));
        }
        else
        {
            p=fabs(p);
            p1=p;
            test1=test;
            d1=d;
            d2=fabs(d);
            while(test!=0)
            {
                temp=p%test;
                p=test;
                test=temp;
            }
            b=p1/p;
            b1=test1/p;
            b2=b1;
            b3=b;
            while(b1>9)
            {
                g=b1%10;
                count++;
                b1=b1/10;
            }
            count2=0;
            while(d2>9)
            {
                g=d2%10;
                count1++;
                d2=d2/10;
            }
            while(b3>9)
            {
                g=b3%10;
                count2++;
                b3=b3/10;
            }
            k=k+count;
            if(minus==1)
            {
                k=k+2;
            }
            if(d1!=0)
            {
                k=k+count1+1;
            }
            for(i=0; i<k-count2; i++)
                printf(" ");
            printf("%ld\n",b);
            if(minus==1)
            {
                printf("- ");
                if(d1<0)
                {
                    d1=fabs(d1);
                    printf("%ld",d1);
                }
            }
            else
            {
                if(d1>0)
                    printf("%ld",d1);
            }
            for(i=0; i<count+1; i++)
                printf("-");
            printf("\n");
            k=0;
            if(minus==1)
                k=k+2;
            if(d1!=0)
            {
                k=k+count1+1;
            }
            for(i=0; i<k; i++)
                printf(" ");
            printf("%ld\n",b2);
        }
    }
    return 0;
}

বৃহস্পতিবার, ২২ জুন, ২০১৭

Count square numbers in a range(n,m)

Input  : n = 5, m = 100
Output : 8
The numbers with odd factors are 9, 16, 25, 
36, 49, 64, 81 and 100

Input  : n = 8, m = 65
Output : 6

Input  : n = 10, m = 23500
Output : 150
source code:-

#include <bits/stdc++.h>
using namespace std;
 
int Squares(int n, int m)
{
   return (int)pow(m,0.5) - (int)pow(n-1,0.5);
}
 
// Driver code
int main()
{
    int n = 5, m = 100;
    cout << "Count is " << Squares(n, m);
    return 0;
}

শনিবার, ১৭ জুন, ২০১৭

Bitwise OR(|) opeartion in a range(10^5*10^5)

In the first example 1 ,3 ,6 ,2
1 | 3 = 3
1 | 6 = 7
1 | 2 = 3
3 | 6 = 7
3 | 2 = 3
6 | 2 = 6
ans = 3 + 7 + 3 + 7 + 3 + 6
ans = 29
input :2
4
1 3 6 2
2
3 7
output:
Case 1: 29
Case 2: 7
#include <bits/stdc++.h>
using namespace std;


long long   pairAndSum(long long   arr[],long long    n)
{
    long long    ans = 0;

    for ( long long   i = 0; i < 32; i++)
    {

        long long    k = 0;
        for (long long   j = 0; j < n; j++)
            if ( !(arr[j] & (1 << i)) )
                k++;


        ans += (1<<i) * (n*(n-1)/2 - k*(k-1)/2);
    }

    return ans;
}


int  main()
{
    long long  test,ii;
    cin>>test;
    for(ii=0; ii<test; ii++)
    {
        long long    t,i,n,arr[210000];

        cin>>n;
        for(i=0; i<n; i++)
            cin>>arr[i];

        printf("Case %lld: ",ii+1);

        cout << pairAndSum(arr, n) << endl;
    }

    return 0;
}

UVA 10926 - How Many Dependencies?

#include<bits/stdc++.h>
using namespace std;
vector<long long>vec[10000];
long dp[10001],vis[10001],cnt;
int dfs(int u)
{

    if(dp[u]!=-1)
        return dp[u];
    long i1;
    for(i1=0;i1<vec[u].size();i1++)
    {
        if(vis[vec[u][i1]]==0)
            cnt++;
        vis[vec[u][i1]]=1;
        dfs(vec[u][i1]);
    }
    return dp[u]=cnt;
}
main()
{
    long n;
    while(cin>>n)
    {
        long long i,a,j,x,mx=0,ans=0;
        if(n==0)
            break;
        for(i=0;i<n;i++)
        {
            cin>>a;
            for(j=0;j<a;j++)
            {
                cin>>x;
                vec[i+1].push_back(x);
            }
        }
        for(i=1;i<=n;i++)
        {
            cnt=0;
            memset(vis,0,sizeof(dp));
            memset(dp,-1,sizeof(dp));
            x=dfs(i);
            if(x>mx)
            {
                mx=x;
                ans=i;
            }
        }
        printf("%lld\n",ans);
        for(i=0;i<110;i++)
        {
            vis[i]=0;
            vec[i].clear();
        }
    }
}

UVA 231 - Testing the CATCHER

#include<bits/stdc++.h>
using namespace std;
#define mx 100005
long value[100005];
long  dp[mx],dir[mx];
long longest(long u)
{
    if(dp[u]!=-1) return dp[u];
    long maxi=0;
    for(long v=u-1; v>=0; v--)
    {
        if(value[v]>value[u])
        {
            if(longest(v)>maxi)
            {
                maxi=longest(v);
                dir[u]=v;

            }
        }
    }
    dp[u]=1+maxi;
    return dp[u];
}
int main()
{
    long n,cs=1;
    while(cin>>n)
    {
        long k=0;
        if(n==-1)
            break;
        else
            value[k++]=n;
        while(cin>>n)
        {
            if(n==-1)
                break;
            else
                value[k++]=n;
        }
        memset(dp,-1,sizeof dp);
        memset(dir,-1,sizeof dir);
        int LIS=0,start;
        for(int i=k-1; i>=0; i--)
        {
            if(longest(i)>LIS)
            {
                LIS=longest(i);
                start=i;
            }
        }
        if(cs!=1)
            printf("\n");
        printf("Test #%ld:\n  maximum possible interceptions: %ld\n",cs++,LIS);
    }
    return 0;
}


রবিবার, ৪ জুন, ২০১৭

UNION SET

     v.size প্রিন্ট করা লাগবে যদি আমি ইউনিয়ন করার পর তৈরি সেটের সাইজ প্রিন্ট দিতে চাই  
  1. FOR ARRAY:-অ্যারে সর্ট করে ভেক্টরে রাখছি 

  2. int first[] = {5,10,15,20,25};
      int second[] = {50,40,30,20,10};
      std::vector<int> v(10);                      // 0  0  0  0  0  0  0  0  0  0
      std::vector<int>::iterator it;

      std::sort (first,first+5);     //  5 10 15 20 25
      std::sort (second,second+5);   // 10 20 30 40 50

      it=std::set_union (first, first+5, second, second+5, v.begin());
                                                   // 5 10 15 20 25 30 40 50  0  0
      v.resize(it-v.begin());                      // 5 10 15 20 25 30 40 50
  3.   
  4. FOR VECTOR
  5. ভেক্টর সর্ট করে ভেক্টরে রাখছি  

  1. vector<int>union(vector<int>A,vector<int>B) { sort(A.begin(),A.end()); sort(B.begin(),B.end()); vector<int> C(A.size()*2); //vector A has same size as vector B vector<int>::iterator it= set_union(A.begin(),A.end(),B.begin(),B.end(),C.begin()); C.resize(it-C.begin()); return C; }

শুক্রবার, ২ জুন, ২০১৭

UVA 1210 - Sum of Consecutive Prime Numbers

#include<bits/stdc++.h>
using namespace std;
#define SIZE 10005
long i,ar[5500]={0},k=0,j,arr[SIZE],status[SIZE];
void sieve()
{
    long sum=0;
    for(i=2; i<10000; i++)
    {
        if(status[i] == 0)
        {
            ar[k++]=i;
            for(j=2; i*j<10000; j++)
            {
                status[i*j] = 1;
            }
        }
    }
    for(i=0;i<k;i++)
    {
        sum=0;
        for(j=i;j<k;j++)
        {
            sum+=ar[j];
            if(sum>10000)
                break;
            else
            {
                arr[sum]++;
            }
        }
    }
}
main()
{
    long n;
    sieve();
    while(cin>>n)
    {
        if(n==0)
            break;
        cout<<arr[n]<<endl;
    }
}

UVA 10551 - Basic Remains

#include<bits/stdc++.h>
using namespace std;
long i;
long decimal_a_rupantor(long base1,string s)
{
    long power=0,no;
    long gap,n=0;
    for(i=s.size()-1; i>=0; i--)
    {
        gap=pow(base1,power)+.0000000001;
        no=s[i]-48;
        n+=no*gap;
        power++;
    }
    return n;
}
using namespace std;
main()
{
    long base;
    string p,m;
    while(cin>>base)
    {
        if(base==0)
            break;
        else
        {
            cin>>p>>m;
            long len=p.size();
            long a=decimal_a_rupantor(base,m);//m ke decimal a rupantor
            string ss="";
            long sum=0,ar[100010]={0},k=0;
            for (i=0; i<p.length(); i++)
            {
                sum=sum*base;
                sum+=p[i]-48;
                sum=sum%a;
            }
            if(sum==0)
                cout<<0<<endl;
            else
            {
                while(sum!=0)
                {
                    ar[k++]=sum%base;
                    sum/=base;
                }
                for(i=k-1;i>=0;i--)
                {
                    cout<<ar[i];
                }
                cout<<endl;
            }
        }
    }
}


Factory Pattern

Factory Method  is a creational design pattern that provides an interface for creating objects in a superclass but allows subclasses to alte...