题目链接
题目大意
给定一个长为(n)的序列,如果两个位置(i,j,abs(i-j)|n)的话这两个位置的颜色必须相同,问最多有多少种颜色
题目思路
只有我是(fw)找规律
显然所有因子的(gcd)
这种差值的东西都是(gcd)
代码
#include<bits/stdc++.h>
#define fi first
#define se second
//#define b tm
#define debug cout<<"I AM HERE"<<endl;
using namespace std;
typedef long long ll;
const int maxn=2e6+5,inf=0x3f3f3f3f,mod=1e9+7;
const double eps=1e-6;
typedef pair<int,int> pii;
const ll INF=0x3f3f3f3f3f3f3f3f;
ll n;
vector<ll> vec;
signed main(){
cin>>n;
for(ll i=2;i*i<=n;i++){
if(n%i==0){
ll x=n/i;
vec.push_back(i);
if(x!=i){
vec.push_back(x);
}
}
}
ll ans;
if((int)vec.size()==0){
ans=n;
}else{
ans=vec[0];
for(auto i:vec){
ans=__gcd(ans,i);
}
}
printf("%lld
",ans);
return 0;
}