题解:Luogu CF548A Mike and Fax

CF548A Mike and Fax题解


题目上说有 \(k\) 个子字符串,我们就可以把字符串分成 \(k\) 份,如果分不成 \(k\) 份(也就是说长度不是 \(k\) 的倍数)的话,直接输出NO。之后,我们循环枚举字符串中的 \(k\) 个子字符串,一次判断是否回文即可。

代码

#include <bits/stdc++.h>
using namespace std;
string a;
int k;
bool add(string a) {
	int l=a.size();
	bool f=1;
	for(int i=0,j=l-1;i<=j;i++,j--){
		if(a[i]!=a[j])f=0;
	}
	return f;
}
int main() {
    cin>>a>>k;
    int l=a.size();
    if(l%k!=0){
    	cout<<"NO";
    	return 0;
	}
    int s=l/k;
    for(int i=0;i<l;i+=s) {
    	string a1=a.substr(i,s);
    	if(add(a1)==false){
    		cout<<"NO";
    		return 0;
		}
	}
	cout<<"YES";
	return 0;
}
posted @ 2024-09-28 22:45  优优的晴空  阅读(38)  评论(0)    收藏  举报