CCF认证——201512-1位数之和(C++)

试题编号: 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;
}

猜你喜欢

转载自blog.csdn.net/imprincess/article/details/79484881