数学水题吧,就是胆大就OK,其实就是思维一点吧
解题思路:
- 首先拿到这个题就直接猜0,1就OK,我也不知道为什么,猜就OK(一些推理吧)
- 然后我们先讨论第一种情况,就是k这个数之前有没有能直接取模等于0的,如果等于0那么肯定是2
- 然后我们判断,k * 2 > n 是否成立,(这里的k,n都要+1,因为题目说的很清楚,小心)因为如果gcd不是 1 ,那么最低也是2倍的关系。
- 最后直接敲出来就OK,注意long long
代码:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
long long n, k;
scanf("%lld%lld",&n,&k);
k += 1;
int f = 0;
for (int i = 2; i <= sqrt(k); i++){
if (k % i == 0){
f = 1;
break;
}
}
if (!f){
if (k * 2 > n + 1){
printf("%d",1);
}
else{
printf("%d",2);
}
}
else{
printf("%d",2);
}
puts("");
return 0;
}