数位和[蓝桥杯2017决赛]
【摘要】 题目链接:数位和 时间限制: 1 Sec 内存限制: 256 MB
题目描述: 数学家高斯很小的时候就天分过人。一次老师指定的算数题目是:1+2+…+100。 高斯立即做出答案:5050! 这次你的任务是类似的。但并非是把一个个的数字加起来,而是对该数字的每一个数位作累加。这样从1加到100的“和”是:901 从10加到15是:21,也就是:1+0+1+1+1+2+1...
题目链接:数位和
时间限制: 1 Sec 内存限制: 256 MB
题目描述:
数学家高斯很小的时候就天分过人。一次老师指定的算数题目是:1+2+…+100。
高斯立即做出答案:5050!
这次你的任务是类似的。但并非是把一个个的数字加起来,而是对该数字的每一个数位作累加。这样从1加到100的“和”是:901
从10加到15是:21,也就是:1+0+1+1+1+2+1+3+1+4+1+5,这个口算都可以出结果的。
按这样的“加法”,从1加到1000是多少呢?
输出:
输出一个整数表示答案
题意:就是求出1到1000的每个数的数位和再累加起来,然后输出累加的结果。
思路:遍历一遍,写个函数求每个数的数位和。
求数位和的函数代码:
int f(int n)
{ int n_sum=0; //存放数位和结果 while(n) //每位都加完后,n变为0了,循环就结束了 { int temp=n%10; //求出每一位的数(最后面的那位数字) n_sum+=temp; // 每位数累加上去 n/=10; //最后一位累加过后,将n除以10(让百位变十位,十位变个位,以此类推) } return n_sum; // 返回n这个数的数位和
}
聪明的你一定看懂了吧[嘻嘻]
然后我们要做的就是遍历一遍,然后不断调用那个求数位和的函数,设置个临时变量,接收着返回的每个数的数位和,然后不断累加给sum,然后我们最后输出sum即可,我们也可以把代码注释掉,然后只打印输出结果也可以。
完整代码:
#include<iostream>
using namespace std;
typedef long long ll;
int f(int n)
{ int n_sum=0; while(n) { int temp=n%10; n_sum+=temp; n/=10; } return n_sum;
}
int main()
{ ll sum=0; for(int i=1;i<=1000;i++) { int x=f(i); sum+=x; } cout<<sum<<endl; return 0;
}
小可爱们看完别忘了点赞哟,谢谢支持!
如果你是电脑端,还可以看到右下角的 “一键三连” ,没错点它[哈哈]
加油!
共同努力!
Keafmd
文章来源: keafmd.blog.csdn.net,作者:牛哄哄的柯南,版权归原作者所有,如需转载,请联系作者。
原文链接:keafmd.blog.csdn.net/article/details/109255775
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)