【晴问算法】入门篇—数学问题—西西弗斯串

题目描述

对任意一个数字串,求出它数位上的偶数个数、奇数个数、数位总数,然后拼接起来得到一个新的数字串(不需要去掉前导零),接着对这个新的数字串同样执行上面的步骤,最终一定会得到123,也就是著名的西西弗斯串。

现有一个数字串n,可以对它执行零或正数次上面的步骤,请计算至少需要多少次可以得到西西弗斯串。

输入描述

一个数字串n(长度不超过10^4)。

输出描述

输出让n变为西西弗斯串的步骤数。

样例1

输入

12345

输出

2

解释

12345 => 235 => 123

样例2

输入

99

输出

3

解释

99 => 022 => 303 => 123

正解:

cpp 复制代码
#include <iostream>
#include <string>
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 < nums.length(); i++) {//nums.length()返回的是一个unsigned int类型的值,这两者类型不同。这种情况可能导致一些意外的问题,将循环变量i的类型改为无符号整数unsigned int
            if ((nums[i] - '0') % 2) {//将字符转换为数字后对2取余来判断是否为奇数。
                oddCount++;
            }
        }
        int evenCount = totalLen - oddCount;//计算偶数的个数evenCount
        nums = to_string(evenCount) + to_string(oddCount) + to_string(totalLen);//将偶数个数、奇数个数和总长度拼接成一个新的字符串赋值给nums
        counter++;
    }
    cout << counter << endl;
    return 0;
}

不知道下面我的做法错在哪,没有答案输出

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100;
string s;

int main(){
	cin >> s;
	int even = 0;
	int odd = 0;
	int count = 0;
	while(s != "123"){//直到字符串是"123"为止
		int len = s.length();
		for(int i=0;i<len;i++){
			if((s[i] - '0') % 2 == 0){//s[i]是一个字符不是数字,不能直接用s[i] % 2 == 0来判断
				even ++;
			}
		}
		odd = len - even;//奇数个数=总长度-偶数个数
		s = to_string(even) + to_string(odd) + to_string(len);//实现了将数字转换为字符串并进行字符串拼接的功能
		count++;	
	}
	cout << count;
	return 0;
}
相关推荐
言乐65 分钟前
Python体现逻辑回归和决策树的区别
开发语言·python·算法·决策树·逻辑回归
HugoStudio_SWAN18 分钟前
洛谷 B4575 [GESP202609 二级] 直角三角形——临场定义理解与边界质疑
c++·学习·程序人生·算法
红豆诗人24 分钟前
C++二叉搜索树:查找、插入和删除为什么这样写
数据结构·c++·算法
HZjiangzi24 分钟前
深耕精密驱动二十六载,捷昌驱动助力机器人产业升级发展
人工智能·算法
奋发向前wcx24 分钟前
CSP-J复赛模拟赛3 王晨旭补题 2026.10.4
算法
H.莓飛33 分钟前
【数据结构】堆_OJ题
linux·数据结构·算法
Dream it possible!1 小时前
蓝桥杯_翻转_C++
c++·算法·蓝桥杯
Ivanqhz1 小时前
BURG(自底向上重写生成器)
服务器·数据库·人工智能·深度学习·算法
言乐61 小时前
逻辑回归与利弊
人工智能·算法·机器学习·数据挖掘·逻辑回归
海绵宝宝转agent1 小时前
Leetcode100 二叉树的中序遍历
java·算法