大数求模

2019-04-14 16:56发布

一.大数求模 一个大数对一个数取余,可以把大数看成各位数的权值与个
位数乘积的和。
比如1234 = ((1 * 10 + 2) * 10 + 3) * 10 + 4,对这个数进
行取余运算就是上面基本加和乘的应用 int len = a. length (); long long ans = 0;//题中一般超int for (int i = 0; i < len; i ++){ ans = (ans * 10 + a[i] - '0') mod b; } 例题: 给定两个整数,a和B,您应该检查a是否可以被B整除。我们知道整数a可以被整数B整除,当且仅当存在整数C使得a=B*C。
输入
输入以整数t(≤525)开始,表示测试用例的数目。
每个情况从包含两个整数a(-10^200≤a≤10^200)和B(|B|>0,B拟合成32位有符号整数)的行开始。数字将不包含前导0。
输出
对于每个案例,请先打印出案例编号。然后打印“整除”,如果一个可以被B整除,否则打印“不能整除”。 Sample Input 3 3 1 7 3 9901 1 Sample Output Case 1: 3 Case 2: 6 Case 3: 12 #include #include int main() { long long b; int t,len,i,j; char a[300]; j=1; scanf("%d",&t); while(t--) { scanf("%s %lld",a,&b); if(b<0) b=0-b; printf("Case %d: ",j); len=strlen(a); long long ans = 0;//注意超int if(a[0]=='-'){ for (i = 1; i