周期字串
#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
#include<set>
using namespace std;
set<string>se;
int main(){
string s;
int ans;
cin>>s;
int l=s.length();
for(int i=1;i<=l;i++){
int n;
if(l%i==0){
n=l/i;
string tem="";
for(int j=0;j<l;j++){
tem+=s[j];
if((j+1)%n==0) {
se.insert(tem);
tem="";
}
}
if(se.size()==1) ans=n;
se.clear();
}
}
cout<<ans<<endl;
return 0;
}
01字串
#include<iostream>
#include<string>
using namespace std;
int main(){
string s="0";
int t;
cin>>t;
while(t--){
string tem = "";
int l = s.length();
for(int i=0;i<l;i++){
if(s[i] == '0') tem+="1";
else tem+="01";
}
s = tem;
}
cout<<s<<endl;
return 0;
}
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string ch(int n){
string s="";
while(n){
s+=(n%10+'0');
n/=10;
}
reverse(s.begin(),s.end());
return s;
}
int main(){
string s;
cin>>s;
while(s.length()>1){
int l=s.length();
int tem=1;
for(int i=0;i<l;i++){
if(s[i]!='0') tem*=(s[i]-'0');
}
s=ch(tem);
}
cout<<s<<endl;
return 0;
}
//超时
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e6;
int b[maxn];
int a[maxn];
int ch(int n){
int num=0;
memset(a,0,sizeof(a));
for(int i=2;i*i<=n;i++){
if(n%i==0){
while(n%i==0){
a[num]++;
n/=i;
}
}
num++;
}
int ans=1;
if(n!=1) a[num++]++;
for(int i=0;i<num;i++){
ans*=(a[i]+1);
}
return ans;
}
int main(){
int n,l,r;
cin>>n>>l>>r;
b[1]=0;
for(int i=2;i<=n;i++){
if(ch(i)%2) b[i]=b[i-1];
else b[i]=b[i-1]+1;
}
cout<<b[r]-b[l]+1<<endl;
return 0;
}
s.insert(3,"123")//插入
s.substr(3,6)//截取