大数取余解析[以NYoj 105 九的余数 为例]
发布时间:2020-12-14 04:05:06 所属栏目:大数据 来源:网络整理
导读:/* NYoj 105 九的余数 大数求余: 主要是对大数进行逐位求余. 该题解法特殊:对于9的取余,只需要逐位求和再求余即可! 可以观察到1*9=9,2*9=18....其各位都为9的和. 通过该题对strlen函数的看法有了新的理解: strlen函数计算字符串的时候可能还需要时间,
/* NYoj 105 九的余数 大数求余: 主要是对大数进行逐位求余. 该题解法特殊:对于9的取余,只需要逐位求和再求余即可! 可以观察到1*9=9,2*9=18....其各位都为9的和. 通过该题对strlen函数的看法有了新的理解: strlen函数计算字符串的时候可能还需要时间, 也有的说是有一定的数据范围! */ //TLE #include<stdio.h> #include<string.h> char a[1000005]; int b[1000005]; int main() { int T; scanf("%d",&T); while(T--) { scanf("%s",a); getchar(); for(int i=0;i<strlen(a);i++) b[i]=a[i]-'0'; for(int i=1;i<strlen(a);i++) b[i]=(b[i-1]*10+b[i])%9; printf("%dn",b[strlen(a)-1]%9); } } //AC #include<stdio.h> #include<string.h> char a[1000005]; int b[1000005]; int main() { int T; scanf("%d",a); getchar(); int n=strlen(a); for(int i=0;i<n;i++) b[i]=a[i]-'0'; for(int i=1;i<n;i++) b[i]=(b[i-1]*10+b[i])%9; printf("%dn",b[n-1]%9); } } //AC again!! #include<stdio.h> #include<string.h> char a[1000005]; int main() { int T; scanf("%d",a); int sum=0,n=strlen(a); for(int i=0;i<n;i++) sum+=(a[i]-'0'); printf("%dn",sum%9); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |