题意:
让你构造一个长度为n的字符串,使得每一个子串都出现奇数次。
思路:
死活构造不出来,只知道每一个字母只能出现奇数次,有一个奇妙的性质没有挖掘到,就是相邻长度l和l+1的连续的字母两个一块构造的话就能出现奇数次,那么讨论讨论就行了,把两个字符串分开用别的字母就可以。注意1的特判。
// Problem: C. Mikasa // Contest: Codeforces - Codeforces Round #735 (Div. 2) // URL: https://codeforces.com/contest/1554/problem/C // Memory Limit: 256 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org) #include<bits/stdc++.h> using namespace std; typedef long long ll; #define x first #define y second typedef pair<int,int> pii; #define int long long int n,m; bool check(int x) { int tt=0; int res=0; for(int i=31;i>=0;i--) { if(n>>i&1) {res+=(1ll<<i);continue;} else { if(tt+(1ll<<i)<=x) tt+=(1ll<<i),res+=(1ll<<i); } } return res>m; } signed main() { int t; cin>>t; while(t--) { int n; cin >> n; string s; if(n==1) { cout<<"a"<<endl; continue; } if(n%2==0) { for(int i=0;i<n/2-1;i++) s+=‘a‘; s+=‘b‘; for(int i=0;i<n/2;i++) s+=‘a‘; } else{ for(int i=0;i<n/2-1;i++) s+=‘a‘; s+=‘c‘; s+=‘b‘; for(int i=0;i<n/2;i++) s+=‘a‘; } cout<<s; cout<<endl; } } /** * In every life we have some trouble * When you worry you make it double * Don‘t worry,be happy. **/
?