
正文
L - Large Division (大数, 同余)
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Given two integers, a and b , you should check whether a is divisible by b or not. We know that an integer a is divisible by an integer b if and only if there exists an integer c such that a = b * c .
Input
Input starts with an integer T ( ≤ 525) , denoting the number of test cases.
Each case starts with a line containing two integers a (-10 200 ≤ a ≤ 10 200 ) and b (|b| > 0, b fits into a 32 bit signed integer) . Numbers will not contain leading zeroes.
Output
For each case, print the case number first. Then print 'divisible' if a is divisible by b . Otherwise print 'not divisible' .
Sample Input
6
101 101
0 67
-101 101
7678123668327637674887634 101
11010000000000000000 256
-202202202202000202202202 -101
Sample Output
Case 1: divisible
Case 2: divisible
Case 3: divisible
Case 4: not divisible
Case 5: divisible
Case 6: divisible
题解:用一个数组来存储大数,运用同余定理
(a*b)%c=(a%c*b%c)%c;
判断最后的余数是不是为零。注意:要用到long long型
关于同余定理
AC代码
#include<stdio.h>
#include<string.h> int main()
{
int n;
char a[];
int b, num = ;
long long sum;
scanf("%d", &n);
while(n--)
{
sum = ;
scanf("%s %d", a, &b);
int len = strlen(a);
for(int i = ; i < len; i++)
{
if(a[i] != '-')
{
sum = (sum* + a[i] - '') % b;
}
}
num++;
if(sum == )
printf("Case %d: divisible\n", num);
else
printf("Case %d: not divisible\n", num);
} return ;
}







