题目链接:数位和
时间限制: 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