实际把前10种手动模拟就能看个大概。
本题有三种情况
- n是质数,答案显然是n
- n= p k p^k pk(p是质数),答案是p
- 其他情况,答案是1。(假设n=x*y;x,y是n的因子。那么相隔ax+by的块颜色一样,不妨设x是质因子,x肯定和y=n/x互质,那么ax+by最小就是1)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long LL;
int main() {
LL n;
int a = 0;
cin >> n;
LL tp = n;
for (LL i = 2; i <= sqrt(tp); i++)
if (tp%i == 0) {
while(tp%i==0) tp /= i;
a = i;
break;
}
//cout << a <<"\n";
if (a == 0) cout << n;
else if (tp!=1) {
printf("1");
} else printf("%d",a);
return 0;
}