CF664A(求解一连串最大公约数)

祝宁AKIOI

流水账

看数据范围真的很重要,一开始还想模拟一下的,但是看到数据范围,果断放弃,数据范围为

\(1<=a<=b<=10^{100}\)

简化一下题意

题目意思就是求\(GCD(a+1,a+2,a+3,......b);\)

其实两个连续数的GCD就是1,我们可以用辗转相除法证明一下

比如\(GCD(x,y)=GCD(y, x%y)\)

我们另x=a,y=a+1,

\(GCD(a,a+1)=GCD(a+1,1)=1;\)

证明完毕

综上

  • 当a,b之间的数达到1个或超过1个时,\(GCD(a,a+1,a+2,......b)=1\)
  • 当只有\(a,b\)两个数时,且\(a==b\),所以\(GCD=a\);

因为\(10^{100}\)

所以用\(string\)存数

string 大法吼啊,可以直接判断两个数是否相等,

#include<bits/stdc++.h>
using namespace std;
string a,b;
int main()
{
	cin>>a>>b;
   if(a==b)
       cout<<a<<endl;
   else 
       cout<<1<<endl;
 } 
posted @ 2020-08-21 20:22  邦的轩辕  阅读(466)  评论(0)    收藏  举报