一.大数求模
一个大数对一个数取余,可以把大数看成各位数的权值与个
位数乘积的和。
比如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