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 (-10200 ≤ a ≤ 10200) 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[230]; int b, num = 0; long long sum; scanf("%d", &n); while(n--) { sum = 0; scanf("%s %d", a, &b); int len = strlen(a); for(int i = 0; i < len; i++) { if(a[i] != '-') { sum = (sum*10 + a[i] - '0') % b; } } num++; if(sum == 0) printf("Case %d: divisible\n", num); else printf("Case %d: not divisible\n", num); } return 0; }