缩位求和

题目描述

2fdd06375cfd4593953944725798ce73.png

输入描述

2870142a72fc4f03aa549bec5d1917a5.png

输出描述

输出为一位数,表示反复逐位求和的结果。

输入输出样例

示例

输入

35379

输出

9

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

总通过次数: 3022  |  总提交次数: 3272  |  通过率: 92.4%

难度: 中等   标签: 2018, 模拟, 省赛

代码:

#include <iostream>
using namespace std;

// 定义函数sum,用于计算缩位求和
int sum(string s)
{
    int su=0, n=0;
    for(int i=0;i<s.size();i++)
        n+=s[i]-'0';  // 将字符串中的每个字符转换为数字,并累加到n中

    do
    {
        su=0;
        for(int i=1;n/i!=0;i*=10)
        {
            int t=n/i%10;  // 分解n的每一位数字
            su+=t;  // 将分解的数字累加到su中
        }
        n=su;
    } while(su>=10);  // 当su大于等于10时,继续进行缩位求和

    return su;
}

int main()
{
    int d;
    string s;
    cin>>s;  // 输入一个长度为1000的字符串
    d=sum(s);  // 调用sum函数计算缩位求和
    cout<<d<<endl;  // 输出结果
    return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值