CF1242 A. Tile Painting题解(gcd)
题目链接
题目大意
给定一个长为\(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\n",ans);
return 0;
}
不摆烂了,写题