【技巧-模拟除法】LightOJ Large Division 1214

来源:互联网 发布:知乎win10显示不了桌面 编辑:程序博客网 时间:2024/05/18 03:40

1214 - Large Division
PDF (English)StatisticsForum
Time Limit: 1 second(s)Memory Limit: 32 MB

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

Output for Sample Input

6

101 101

0 67

-101 101

7678123668327637674887634 101

11010000000000000000 256

-202202202202000202202202 -101

Case 1: divisible

Case 2: divisible

Case 3: divisible

Case 4: not divisible

Case 5: divisible

Case 6: divisible

 


题意:

给两个数a,b,问a能否被b整除?

解题思路:

开始想用模拟除法~傻了。。直接模拟除取余就可以了。详细看代码。注意b是long long型

AC代码:

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int main(){    int t;    int xp=1;    scanf("%d",&t);    while(t--){        char s[500];        long long a;        scanf("%s%lld",s,&a);        a=abs(a);        printf("Case %d: ",xp++);        int l=strlen(s);        long long r=0;        for(int i=0;i<l;i++){            if(s[i]=='-')continue;            r*=10;            r+=(s[i]-'0');            r%=a;        }        if(!r)            printf("divisible\n");        else printf("not divisible\n");    }    return 0;}


0 0