首页 > 学院 > 开发设计 > 正文

Divisible [数学]同余定理

2019-11-06 06:23:43
字体:
来源:转载
供稿:网友

给定一个很大的整数,我想知道它能否被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 longint 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也要更加认真 多练


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表