九的余数

 

自然数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<iostream>
#include<string>
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<len)
{
sum+=str[i]-48;
i++;
}
cout<<sum%9<<endl;
}
cin>>m;
return 0;
}
另附超大求超大数除以1-9的余数的讨论
网址  http://topic.csdn.net/u/20071025/21/3b654fb6-8cf7-4818-a4b3-95312a216527.html

转载于:https://www.cnblogs.com/pcoda/archive/2011/07/16/2108237.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值