解题思路:本质上就是判断是否n%i==i-1,1<=i<=m。
注意事项:
参考代码:
#include<bits/stdc++.h>//时间复杂度O(T)
using namespace std;
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d%d",&n,&m);
bool flag=true;
for(int i=2;i<=m;i++){//重点是这个循环会循环多少次,根据中国剩余定理的变形
//当n==0(mod 1)
// n==1(mod 2)
// ......
// n==22(mod 23)时,n最小为535354228879,超出了10^9,所以这个循环在本题最多循环23次就能判断出结果(也就是m>=23时,必然输出Yes)
if(n%i!=i-1){
flag=0;
break;
}
}
if(flag)puts("No");
else puts("Yes");
}
}
0.0分
1 人评分
已退役 2024-01-08 08:20:56 |
cin本来就比scanf慢很多,打算法比赛用cin一般都要main函数第一行有一个关流的语句,我退圈了,有点忘了咋写了