UVA11687 题解

· · 题解

题目传送门

题目大意

给定一个数字,每次都会变为它的位数。求这个数字多少次会变成 1

思路

鉴于本题需要操作的数字较大,可以用 string 进行操作。由于第一次操作就会把一个百万位的数字变为 8 位以内的数字,故可以用 int 来承接。用 to_stringsize 两个函数配合模拟整个过程,并统计操作次数即可。

AC CODE

#include<bits/stdc++.h>
using namespace std;

int main(){
    string s;
    while(true){
        cin>>s;
        if(s=="END")
            return 0;
        int ans=1;
        for(;s!="1";++ans)
            s=to_string(s.size());
        printf("%d\n",ans);
    }
    return 0;
}