【晴问算法】入门篇—数学问题—西西弗斯串
题目描述
(图片来源网络,侵删)
对任意一个数字串,求出它数位上的偶数个数、奇数个数、数位总数,然后拼接起来得到一个新的数字串(不需要去掉前导零),接着对这个新的数字串同样执行上面的步骤,最终一定会得到123,也就是著名的西西弗斯串。
现有一个数字串n,可以对它执行零或正数次上面的步骤,请计算至少需要多少次可以得到西西弗斯串。
输入描述
一个数字串n(长度不超过10^4)。
输出描述
输出让n变为西西弗斯串的步骤数。
样例1
输入
12345
输出
2
解释
12345 => 235 => 123
样例2
输入
99
输出
3
解释
99 => 022 => 303 => 123
正解:
#include #include using namespace std; int main() { string nums;//用于存储输入的数字字符串 cin >> nums; int counter = 0;//用于记录循环的次数 while (nums != "123") {//直到字符串等于"123"为止 int totalLen = nums.length();//首先获取nums的长度totalLen int oddCount = 0; for (unsigned i = 0; i
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。