CC

自然万物都趋向从有序变得无序

0%

LightOJ 1214 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,

思路:

只需要判断a % b == 0即可,由于数比较大,那么根据乘法和加法取模的性质,我们可以这样取模,假设一个是n = a1a_1 a2a_2 a3a_3 a4a_4…,其中 aia_i 表示每一位的数字,那么我们可以这样取模,((((a1a_1 % mod) * 10 +a2a_2 )% mod) *10 + a3) % mod …),

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;

char ss[220];
typedef long long LL;

int main(){
LL mod;
int t,kase = 0;
scanf("%d",&t);
while( t--){
scanf("%s %lld", ss, &mod);
LL ans = 0;
int i = 0;
int len = strlen(ss);
if (ss[0] == '-')
++i;
for(; i < len; ++i){
ans = ( ans * 10 +(LL)(ss[i] - '0')) % mod;
}
if(ans)
printf("Case %d: not divisible\n", ++kase);
else printf("Case %d: divisible\n", ++kase);
}
return 0;
}