试题编号: | 201512-1 |
---|---|
试题名称: | 数位之和 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定一个十进制整数n,输出n的各位数字之和。 输入格式 输出一个整数,表示答案。 样例输入 20151220 样例输出 13 样例说明 20151220的各位数字之和为2+0+1+5+1+2+2+0=13。 评测用例规模与约定 所有评测用例满足:0 ≤ n ≤ 1000000000。 |
说明:此题要注意一点的就是题目给定的n的范围大小,所以我们可以用double型来表示n的类型。刚开始用的int类型,并不满足所有的测试用例,得分90分,用double来表示输入的值n,此题得满分。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
double n;
cin>>n;
int count=1;//代表n的位数
double l=n;
while((l/10)>1)
{
count++;
l=l/10;
}
//div表示除数,mod表示余数。刚开始用取模运算(%)求余数,出现“表达式类型必须具有整数或者未区分范围的枚举类型”错误。
int div=n/(pow(10,count-1)),mod=n-div*pow(10,count-1);
int sum=div;
for(int i=2;i<=count;i++)
{
div=mod/(pow(10,count-i));
mod=mod-div*pow(10,count-i);
sum+=div;
}
cout<<sum;
return 0;
}