20240319每日一题题解

折柳 / 2024-03-20 / 原文

20240319每日一题题解

Problem

判断一个数的结构是否为某个数重复两遍得到。

例如,\(123123\)是重复两遍的数,而\(333\)\(809680\)​则不是

保证输入的数字不超过long long型范围。

若是,则输出yes;否则输出no

Solution

从数字的角度要想解决这个问题也不是不可以,但是不如将给定的数字转换为字符串。考虑计算这个数字的总位数(即字符串长度),然后对半分割。之后判断分割的两部分是否相同即可。

Code

#include<iostream>

using namespace std;

int main()
{
	string str;
	cin>>str;
	if(str.size()%2==1)
	{
		cout<<"no"<<endl;
	}
	else
	{
		if(str.substr(0,str.size()/2)==str.substr(str.size()/2))
		{
			cout<<"yes"<<endl;
		}
		else
		{
			cout<<"no"<<endl;
		}
	}
	return 0;
}