寒假集训附加题目题解报告(6)——数位根
2013-01-21 20:03
501 查看
这题气得我要半死!总是TLE,T泥煤啊!!!想了半天不知道怎么优化!原来出现在输入0它不退出!!!!!!!
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=5#problem/E
一开始做的时候没想那么多,就在设想,即便是10000位,每一位都是最大的数字9,他们的总和不过是99999,然后再ans+=sum%10;sum/=10;就可以了。所以一开始的代码如下:
http://acm.sdut.edu.cn:8080/judge/contest/view.action?cid=5#problem/E
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char a[10010]; int main() { while(scanf("%s",a)&&strcmp(a,"0")!=0) { int sum=0; for(int i=0;i<=strlen(a)-1;i++) { sum+=a[i]-'0'; } if(sum%9==0){cout<<"9"<<endl;} else {cout<<sum%9<<endl;} } }思路正常,就是最后取9的模用GCD证明就可以了,详见《初等数论》。。。
一开始做的时候没想那么多,就在设想,即便是10000位,每一位都是最大的数字9,他们的总和不过是99999,然后再ans+=sum%10;sum/=10;就可以了。所以一开始的代码如下:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char a[10010]; int main() { while(scanf("%s",a)&&strcmp(a,"0")!=0) { int sum=0; for(int i=0;i<=strlen(a)-1;i++) { sum+=a[i]-'0'; } int ans=0; while(sum>=1) { ans+=sum%10; sum/=10; } cout<<ans<<endl; } }
相关文章推荐
- 寒假集训附加题目题解报告(2)——加减乘除
- 寒假集训附加题目题解报告(7)——"数学好奇心"
- 寒假集训附加题目题解报告(8)——编码
- 寒假集训附加题目题解报告(4)——3n+1数链长度问题
- 寒假集训附加题目题解报告(3)——阶乘的0有几个?
- 寒假集训附加题目题解报告(5)——求e
- 寒假集训附加题目题解报告(1)——数列
- 2018年全国多校算法寒假训练营练习比赛(第四场) 比赛题目题解
- 2015年nefu寒假集训结构体排序专题解题报告
- cogs 自己出的题目 题解报告
- SDUT - 2017年寒假集训 阶段测试赛3(组队) -- 解题报告
- SDUT - 2017年寒假集训 阶段测试赛3(个人) -- 解题报告
- ACM寒假集训部分题目总结
- 2018年全国多校算法寒假训练营练习比赛(第五场)比赛题目题解
- 寒假集训 Day 7 H题 UVALive - 3902 Network 网络
- 寒假训练报告2.2(数论基础)
- 干货 知识图谱研究青年学者研讨会在清华大学顺利召开刘知远 报告题目:大规模知识图谱表示学习的研究趋势与挑战
- [暑假集训--数位dp]hdu2089 不要62
- SHU 2013 暑期集训(7-15)解题报告
- 2018年福州寒假集训Day4