Light OJ : 1214 - Large Division

You can do this with java using built in functions but i suggest to do it with c++ , it'll enrich your capability.  :)


#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    int T;
    ll b;
    char a[300];
    scanf("%d",&T);
    for(int tt=1;tt<=T;tt++)
    {
        scanf("%s %lld",a,&b);

        if(b<0)
            b*=(-1);

        int i=(a[0]=='-')?1:0;
        int l=strlen(a);

        ll n,rem=a[i]-'0',firstTime=1;
        /*
        if b= 2^31 -1 then generating number from 'a[]' may cross integer(2^31) limit,
        so generating number n is considered long long int
        */
        for(i;i<l;i++)
        {
            if(rem==0)
                n=a[i]-'0';
            else
            {
                if(firstTime)
                    {n=rem;firstTime=0;}
                else
                    n=rem*10+(a[i]-'0');
            }

            int flag=0;
            //cout<<"i="<<i<<" n="<<n<<endl;
            while(n<b)
            {
                i++;
                if(i>=l)
                {
                    flag=1;break;
                }
                n=n*10+(a[i]-'0');
                //cout<<"halum "<<n<<" ";
            }
            rem=n%b;//cout<<"n="<<n<<"  rem="<<rem<<"\n";
        }
        if(rem)
            printf("Case %d: not divisible\n",tt);
        else
            printf("Case %d: divisible\n",tt);
    }
    return 0;
}

Comments

Popular posts from this blog

PopIt Serially support page

10405 - Longest Common Subsequence (UVA)