A. 我to_string 不过 所以if else
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define mkp make_pair
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
const int N=1e3+10;
const int M=6e4+5;
const int INF=0x3f3f3f3f;
const ll mod=1e9+7;
void solve(){
int n;cin>>n;
if(n<=10)cout<<n<<endl;
else if(n>10&&n<=100){
cout<<9+n/10<<endl;
}
else if(n>100&&n<=1000){
cout<<9+9+n/100<<endl;
}
else if(n>1000&&n<=10000){
cout<<9+9+9+n/1000<<endl;
}
else if(n>10000&&n<=100000){
cout<<9+9+9+9+n/10000<<endl;
}
else cout<<9+9+9+9+9+n/100000<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
while(t--){
solve();
}
}
B. 也是纯暴力走一遍
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define mkp make_pair
#define ll long long
#define sz(i) (i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
const int N=1e3+10;
const int M=6e4+5;
const int INF=0x3f3f3f3f;
const ll mod=1e9+7;
void solve(){
int n;cin>>n;map<char,int> mp;
for(auto x:mp)x.second=0;
string s;cin>>s;
for(int i=0;i<n;i++){
char x=s[i];mp[s[i]]=1;
char y=s[i+1];
for(int j=i+2;j<=n;j++){
if(s[j]==x&&s[j+1]==y){
cout<<"YES"<<endl;return ;
}
}
}
cout<<"NO"<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
while(t--){
solve();
}
}
C. 因为只有两行 可以用01 来模拟
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define mkp make_pair
#define ll long long
#define sz(i) (int)(i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
const int N=1e5+10;
const int M=6e4+5;
const int INF=0x3f3f3f3f;
const ll mod=1e9+7;
void solve(){
int n;cin>>n;
string s[2];
cin>>s[0]>>s[1];
for(int i=0;i<2;i++){
int x=i;int ok=1;
for(int j=0;j<n;j++){
if(s[x][j]!='B')ok=0;
if(s[!x][j]=='B')x^=1;
}
if(ok){
cout<<"YES"<<endl;return ;
}
}
cout<<"NO"<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
while(t--){
solve();
}
}
D. gcd(x+k,y+k)->gcd(x+k,y-x) 对y-x分解质因数 假设不互质求最大的质因子就是答案
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define pb push_back
#define mkp make_pair
#define ll long long
#define sz(i) (int)(i).size()
#define mem(i,j) memset(i,j,sizeof(i))
#define rep(i,j,k) for(ll i=(j);i<=(k);i++)
const int N=1e7+10;
const int M=100010;
const int INF=0x3f3f3f3f;
const ll mod=998244353;
int mp[N];
vector<int> v;
void init(){
for(int i=2;i<=N;i++){
if(!mp[i]){
mp[i]=i;v.pb(i);
}
for(auto p:v){
if(i*p>N)break;
mp[i*p]=p;
if(i%p==0)break;
}
}
}
void solve(){
int x,y;cin>>x>>y;
int d=y-x;
if(d==1){
cout<<"-1"<<endl;return ;
}
int ans=INF;
while(d>1){
int p=mp[d];
d/=p;
ans=min(ans,(p-x%p)%p);
}
cout<<ans<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;cin>>t;
init();
while(t--){
solve();
}
}