题目地址:http://lightoj.com/volume_showproblem.php?problem=1214
求a%b是否为0 a是大数,b是int
利用 a*b%p=(a%p)*b%p 和 (a+b)%p=((a%p)+b)%p
可以化成a=m1 * 10x1+m2 * 10x2+…+mn*10xn进行求解
注意a可能是负数。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
char s[522];
int main()
{
int t,ans1;
scanf("%d",&t);
ans1=1;
while(t--)
{
int n;
long long sum;
sum=0;
scanf("%s%d",s,&n);
n=fabs(n);
int l=strlen(s);
int i=0;
if(s[i]=='-')
i=1;
for(i;i<l;i++)
{
sum=sum*10+(s[i]-'0');///sum会爆int
sum=sum%n;
}
if(sum==0)
printf("Case %d: divisible\n",ans1);
else
printf("Case %d: not divisible\n",ans1);
ans1++;
}
return 0;
}