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;
}
#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
Post a Comment