缩位求和——蓝桥杯

1.题目描述

在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。

比如:248×15=3720248×15=3720

把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是 1 位数,得

2+4+8=14==>1+4=5

1+5=6

5×6

而结果逐位求和为 3。

5×6 的结果逐位求和与 3 符合,说明正确的可能性很大!!(不能排除错误)

请你写一个计算机程序,对给定的字符串逐位求和。

输入描述

输入描述

输入为一个由数字组成的串,表示  (<1000)位数;

输出描述

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

输入输出样例

示例

输入

35379

输出

9

运行限制

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

2.代码

#include 
#include
using namespace std;
int main()
{
  string s;
  getline(cin,s);
  string t=s;
  while(t.length()!=1)
  {
    int sum=0;
    for(int i=0;i

3.代码解析

输入部分
string s;
getline(cin, s);
  • 使用 getline 从标准输入读取一行字符串,存储到变量 s 中。这允许输入包含空格的字符串,但在这个场景下,输入应该是一个纯数字字符串。

初始化
string t = s;
  • 将输入的字符串 s 赋值给变量 t,用于后续处理。

主循环
while (t.length() != 1) {
    int sum = 0;
    for (int i = 0; i < t.length(); i++) {
        sum += t[i] - '0';
    }
    t = to_string(sum);
}
  • 循环条件:当 t 的长度不为1时,继续循环。

  • 计算数字和

    • 初始化 sum 为0。

    • 遍历字符串 t 的每个字符,将每个字符转换为对应的整数值(通过 t[i] - '0'),并累加到 sum 中。

  • 更新字符串

    • sum 转换为字符串,赋值给 t,以便在下一次循环中继续处理。

输出结果
cout << t << endl;
  • t 的长度为1时,循环结束,输出最终的字符串 t

你可能感兴趣的:(算法,c++,蓝桥杯,数据结构)