直觉就是这题会有公式,然后和别人一起讨论了很久之后毫无进展
后来只好参考了一下别人博客里的想法
终于恍然大悟
就是把一个圆,在圆周上画点将其等分,想分成p等份需要画p个点
想分成q等份需要画q个点
并且如果都是从同一个起点开始画,那么会有gcd(p,q)个点是重合的
于是公式就是p+q-gcd(p,q)
代码如下:
#include <cstdio>
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
if(a<b){
int temp=a;
a=b;
b=temp;
}
while(b!=0){
int t=a%b;
a=b;
b=t;
}
return a;
}
int main()
{
int p,q;
while(scanf("%d%d",&p,&q)!=EOF){
int res=p+q-gcd(p,q);
printf("%d\n",res);
}
return 0;
}