2 条题解

  • 1

    大重载照亮世界,int128没有输入那就给他写个输入(其实和函数一样)

    #include<bits/stdc++.h>
    using namespace std;
    __int128 a,b,l,g,ans;
    istream&operator>>(istream &is,__int128 &n){
    	string s;
    	is>>s;
    	n=0;
    	for(char i:s) n=n*10+i-'0';
    	return is;
    }
    ostream&operator<<(ostream &is,__int128 &n){
    	string s;
    	while(n){
    		s+='0'+n%10;
    		n/=10;
    	}
    	reverse(s.begin(),s.end());
    	return is<<s;
    }
    __int128 gcd(__int128 a,__int128 b){
    	return a%b==0?b:gcd(b,a%b);
    }
    int main(){
    	freopen("easy.in","r",stdin);
    	freopen("easy.out","w",stdout);
    	cin>>a>>b;
    	g=gcd(a,b);
    	l=a/gcd(a,b)*b;
    	ans=g^l;
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

      难点在于 __int128 需要快读快写。

      #include<bits/stdc++.h>
      using namespace std;
      __int128 read(){
      	__int128 flag=1,num=0;
      	char cum=getchar();
      	while(cum<'0'||cum>'9'){
      		if(cum=='-') flag=-1;
      		cum=getchar();
      	}
      	while(cum>='0'&&cum<='9'){
      		num=(num<<3)+(num<<1)+(cum-'0');
      		cum=getchar();
      	}
      	return flag*num;
      }
      void write(__int128 sum){
      	if(sum>=10){
      		write(sum/10);
      		printf("%d",(int)(sum%10));
      	}
      	else printf("%d",(int)sum);
      }
      __int128 gcd(__int128 a,__int128 b){
      	return a%b==0?b:gcd(b,a%b);
      }
      int main(){
      	freopen("easy.in","r",stdin);
      	freopen("easy.out","w",stdout);
      	__int128 a=read(),b=read();
      	__int128 g=gcd(a,b),l=a/gcd(a,b)*b;
      	__int128 ans=g^l;
      	write(ans);
      	return 0;
      }
      
      • 1

      信息

      ID
      766
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      (无)
      递交数
      109
      已通过
      4
      上传者