Divisible [数学]同余定理

给定一个很大的整数,我想知道它能否被9整除。

输入
有t组测试数据,每组数据给定一个整数N不存在前导0。(1 <= t <= 20,1 <= N <= 10^200)。

输出
对每组测试数据,若N可以被9整除,输出1,反之输出0。

样例输入
3
111111111111111111111111111111
6666666666666666
9999999999999999999999999999
样例输出
0
0
1

#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define ll long long


int main(){
    int t;
    scanf("%d",&t);
    char an[220];
    int b[220];
    while (t--){
        memset(an,0,sizeof(an));
        memset(b,0,sizeof(b));
        scanf("%s",an);
        int len;
        len = strlen(an);
        for (int i= 0; i < len; ++i){
            b[i] = an[i]-'0';
        }
        int temp = 0;
        int i;
        for ( i = len-1; i >= 0; --i){
            temp = (temp*10%9 + b[i]%9)%9;
        }
        if (temp == 0)
        printf("1\n");
        else printf("0\n");
    }
    return 0;
}

同余定理 写成这样的形式也可以temp = (temp*10 + b[i])%9
一开始–i写成++i 愣是半天没发现 感觉和心态写有些关系 code也要更加认真 多练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值