数位和[蓝桥杯2017决赛]

举报
牛哄哄的柯南 发表于 2021/05/28 05:49:08 2021/05/28
1.9k+ 0 0
【摘要】 题目链接:数位和 时间限制: 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

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。