A:
f(x)= 1 或 质数
其余的数 质数^n
```cpp
1.设所有数为质数 0,1非质
2、for(int i=2;i<=1e7;i++){
if(isp[i]成立){
//i为质
//标记
//……
}
埃氏筛法代码,筛出2~1e7中的质数
3、for(int i=1;i<=n;i++){
for(int j=i;j<=1e7/i;j++){
//int,long long转变问题
}
}
```
B:
周期问题
a*b的周期
循环节,k是t的倍数
C:
getline struct map(sort) 输出
D:
二分答案
max((最大间距+1)/2,次大间距)
T1:
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if(a==0){
return b;
}
else if(b==0){
return a;
}
else{
if(a>b){
gcd(a%b,b);
}
else{
gcd(a,b%a);
}
}
}
int main(){
freopen("gcd.in","r",stdin);
freopen("gcd.out","w",stdout);
int n,m;
cin>>n>>m;
int num=0;
for(int i=n;i<=m;i++){
int ans=1,flag=0;
for(int j=2;j<=i;j++){
if(i%j==0){
if(flag==0) ans=j,flag=1;
else if(gcd(ans,j)==1){
ans=1;
break;
}
else ans=gcd(ans,j);
}
}
num+=ans;
}
cout<<num;
return 0;
}
T2:
#include<bits/stdc++.h>
using namespace std;
bool flag[10005];
int main(){
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
int q,a,b;
cin>>a>>b>>q;
int cnt=0;
for(int i=1;i<=a*b;i++){
if(i%a==0||i%b==0){
flag[i]=0;
}
else{
flag[i]=1;
cnt++;
}
}
while(q--){
long long x;
cin>>x;
long long num=x/cnt*cnt;
long long time=x/cnt*a*b;
if(num!=x){
for(int i=1;i<=a*b;i++){
if(flag[i]==1) num++;
time++;
if(num==x) break;
}
}
else{
for(int i=a*b;i>=1;i--){
if(flag[i]==0) num--;
else break;
}
}
cout<<time<<endl;
}
return 0;
}
T3:
#include<bits/stdc++.h>
using namespace std;
struct node{
string name;
int id;
}stu[100005];
map<string,int> mp;
int main(){
freopen("abbr.in","r",stdin);
freopen("abbr.out","w",stdout);
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>stu[i].name;
}
for(int i=0;i<26;i++){
mp["A"+i]=0;
}
for(int i=1;i<=n;i++){
stu[i].name=stu[i].name[0];
mp[stu[i].name]++;
stu[i].id=mp[stu[i].name];
}
for(int i=1;i<=n;i++){
cout<<stu[i].name;
if(mp[stu[i].name]!=1) cout<<stu[i].id;
cout<<endl;
}
return 0;
}