自然数123456789101112……198919901991被9除,余数是几?根据“一个数被9除的余数,等于它各位数字之和被9除的余数”这一“弃九法”的原理,考虑本题的答案,只须考虑:A=1+2+3+4+5+6+7+8+9+1+0+1+1+……+1+9+8+9+1+9+9+0+1+9+9+1被9的余数,并将它与如下的B作比较:B=1+2+3+4+5+6+7+8+9+10+11+……+1989+1990+1991。由于B中的每个数,都对应A中若干个数字之和(即该数的各位数字之和,如B中的+10就与A中的+1+0对应;B中的1991就与A中的+1+9+9+1对应).而两者对9来说,余数都是一样的[如B中1991÷9=221……2;A中的(1+9+9+1)÷9=20÷9=2……2].也就是说,它们可以互相替换,被9除时,不会影响余数.根据这个道理:A÷9与B÷9的余数是相等的.而后者是前1991个自然数的和,可以每9个数作为一段,即:B=(1+2+3+……+8+9)+(10+11+……+18+19)+……+(1981+……+1989)+1990+1991。而每一段都能被9整除,最后剩下两个数,它除以9余数为3.所以本题答案应是:余数是3。
九的余数
时间限制: 3000 ms | 内存限制: 65535 KB
难度: 3
- 描述
-
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数。
-
- 输入
- 第一行有一个整数m(1<=m<=8),表示有m组测试数据; 随后m行每行有一个自然数n。 输出
- 输出n整除九之后的余数,每次输出占一行。 样例输入
-
3 4 5 465456541
样例输出 -
4 5 4
#include#include using namespace std; int main() { int sum,i,len; int m; string str; cin>>m; while(m--) { cin>>str; i=0;sum=0; len=str.length(); while(i >m; return 0; }
另附超大求超大数除以1-9的余数的讨论 网址