​传送门​

题目大意

给你一个无限长的数轴还有一个大小为n的整数数组Codeforces 1344 A_i++对于数轴上的所有表示整数的点,我们需要将它们同时移动。对于任意一个整数k,k 将会被移动到Codeforces 1344 A_i++_02所在的位置。现在请你判断移动后是否有任意两个整数的位置相同

思路

对0到n-1进行模拟操作,判断是否重合即可

代码

int a[maxn];
map<int,int>mp;

int main(){
int t;
cin>>t;
while(t--){
int n;
mp.clear();
cin>>n;
int tmp;
int flag=1;
for(int i=0;i<n;i++){
scanf("%d",&tmp);
tmp=((tmp%n)+n)%n;
tmp=i+tmp;
if(tmp>=n)tmp-=n;
mp[tmp]++;
if(mp[tmp]>=2)flag=0;
}
if(flag){
puts("YES");
}
else{
puts("NO");
}
}
}