2022 ICPC-网络预选赛-赛后总结
题解
E构造数列
是的,只过了一个签到题
#include<iostream>
using namespace std;
long long n,k;
long long ans=0;
int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
int main(){
cin>>n>>k;
int num2=0;
int num3=0;
if(k%2==1){
if((n-1)%2==1){
num2=(n-1)/2+1;
num3=(n-1)/2;
}
else{
num2=(n-1)/2;
num3=(n-1)/2;
}
ans=k+num2*2+num3*3;
}
else {
if(k==2) {
if((n-1)%2==1){
num3=(n-1)/2+1;
num2=(n-1)/2;
}
else{
num3=(n-1)/2;
num2=(n-1)/2;
}
ans=k+num2*2+num3*3;
}
else {
int sec=0;
for(int i=3;i<=k-1;i++){
if(gcd(k,i)==1) {
sec=i;
break;
}
}
if((n-2)%2==1){
num2=(n-2)/2+1;
num3=(n-2)/2;
}
else{
num2=(n-2)/2;
num3=(n-2)/2;
}
ans=k+sec+num2*2+num3*3;
}
//cout<<" "<<k<<" "<<sec<<" "<<num2<<" "<<num3<<" "<<endl;
}
cout<<ans;
}