题意:
在1~k中,是否存在两个数i,j,使得 n%i=n%j ?
思路:
试图推理 i, j 和n的关系,但是没有最后的结论;
能得到的就是如果不存在的话
1:n%1=0,n%2=1, n%3=2,n%4=3,·····,n%k=k-1;
2:存在 i*j*k < n 且 n-i*j*k < min(i, j);
最后只好猜了一下:
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<queue>
#include<list>
#include<stack>
#include<map>
#pragma comment(linker, "/STACK:102400000,102400000")
#define PI acos(-1.0)
#define in freopen("in.txt", "r", stdin)
#define out freopen("out.txt", "w", stdout)
#define kuaidian ios::sync_with_stdio(0);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int mod = 1e9 + 7;
const int INF = 0x7f7f7f7f;
const int maxn = 1e5 + 7, maxd = 1e6 + 7;
ll n, k;
map<int, int> mp;
int main() {
kuaidian
cin >> n >> k;
if(k > 10000) k = 10000;
int f = 0;
for(ll i = 1; i <= k; ++i) {
if(mp[n%i]) {
f = 1; break;
}
else mp[n%i]++;
}
if(f) cout << "No";
else cout << "Yes";
return 0;
}