码蹄集 - MT2201 · 各位之和

Posted Tisfy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了码蹄集 - MT2201 · 各位之和相关的知识,希望对你有一定的参考价值。

传送门


各位之和

时间限制:1秒
空间限制:128M


题目描述

小码哥超厉害,可以把任意的数通过一次操作变成它的各个数位上的数字之和。

现在小码哥找来了一个数n,请问操作几次之后可以变成一个一位数。


输入描述

输入包含一个整数 n n n

数据范围

1 < = n < = 1 0 100000 1 <= n <= 10^100000 1<=n<=10100000


输出描述

输出一行一个数表示答案


样例一

输入

991

输出

3

题目分析

直接按照要求,进行模拟即可。

其实看到 1 0 100000 10^100000 10100000不用害怕,直接把输入的数字当作字符串来处理即可。

1 0 100000 10^100000 10100000也就是说输入的字符串的长度最大为 100000 100000 100000,而 100000 100000 100000个数求和最大不到 1 0 6 10^6 106(最多 6 6 6位)

因此很快就会收敛为一位数。完全不用担心时间问题。

字符串の各位和

字符串的各位和比较容易,直接遍历字符串,并累加每一位即可。

ll getS(string s) 
    ll ans = 0;
    for (char& c : s)
        ans += c - '0';
    return ans;

数字の各位和

数字的各位和也不难。在数字不为零的时候,每次取出数字的个位数,然后让数字除以 10 10 10即可。

ll getS(ll n) 
    ll ans = 0;
    while (n) 
        ans += n % 10;
        n /= 10;
    
    return ans;

AC代码

/*
 * @Author: LetMeFly
 * @Date: 2022-07-21 09:46:18
 * @LastEditors: LetMeFly
 * @LastEditTime: 2022-07-21 09:48:26
 */
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;

ll getS(string s) 
    ll ans = 0;
    for (char& c : s)
        ans += c - '0';
    return ans;


ll getS(ll n) 
    ll ans = 0;
    while (n) 
        ans += n % 10;
        n /= 10;
    
    return ans;


int main() 
    string s;
    cin >> s;
    if (s.size() == 1) 
        puts("0");
        return 0;
    
    ll n = getS(s);
    int ans = 1;
    while (true) 
        if (n < 10)
            break;
        ans++;
        n = getS(n);
    
    cout << ans << endl;
    return 0;

虽然代码可以复制,但最好还是自己理解后再敲哦

原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/125918169

以上是关于码蹄集 - MT2201 · 各位之和的主要内容,如果未能解决你的问题,请参考以下文章

算法竞赛入门码蹄集新手村600题(MT1201-1250)

码蹄集 - MT2093 · 回文数数位

算法竞赛入门码蹄集进阶塔335题(MT2286-2290)

码蹄集 - MT3111· 赋值

算法竞赛入门码蹄集新手村600题(MT1501-1550)

算法竞赛入门码蹄集新手村600题(MT1401-1450)