解题思路:
通过getline函数从输入中读取一个字符串s。然后检查字符串的长度。如果长度是奇数,那么原始长度就是当前长度。这是因为无论我们如何拆分这个长度为奇数的字符串,都不能形成两个相同的部分。如果长度是偶数,将进入一个循环,每次将长度减半,直到长度为奇数。在循环中,我们检查字符串的两端是否相同。如果两端不同,那么原始长度就是当前长度,因为无论如何拆分都无法形成两个相同的部分。如果两端相同,我们就继续循环,直到长度变为奇数。最后,输出原始长度。
代码如下:
#include<bits/stdc++.h> using namespace std; int main(){ string s; getline(cin,s); int length = s.length(); if(length % 2 != 0) cout << length; else while(length % 2 == 0) { if(length / 2 % 2 == 0) cout << length /2; for(int j = 0, i = length - 1; j <i; j++, i--) { if(s[i] == s[j]) length /= 2; cout << length + 1; } } return 0; }