Codeforces 922-C
Imp is watching a documentary about cave painting.
Some numbers, carved in chaotic order, immediately attracted his attention. Imp rapidly proposed a guess that they are the remainders of division of a number n by all integers i from 1 to k. Unfortunately, there are too many integers to analyze for Imp.
Imp wants you to check whether all these remainders are distinct. Formally, he wants to check, if all , 1 ≤ i ≤ k, are distinct, i. e. there is no such pair (i, j) that:
- 1 ≤ i < j ≤ k,
- , where is the remainder of division x by y.
The only line contains two integers n, k (1 ≤ n, k ≤ 1018).
Print "Yes", if all the remainders are distinct, and "No" otherwise.
You can print each letter in arbitrary case (lower or upper).
4 4
No
5 3
Yes
In the first sample remainders modulo 1 and 4 coincide.
题意:在1~k中对n求余数,判断所得余数是否有相同的,如果有输出“No”,否则,输出“Yes”。
题解:用一个数组用来为数组下标的余数分别出现了几次。
#include<iostream>
#include<string.h>
using namespace std;
const int maxn = 1000000;
long long book[maxn];
long long n,k;
int main()
{
cin>>n>>k;
long long cnt = 1;
bool flag = true;
long long a;
memset(book, 0, sizeof(book));
while(cnt<=k)
{
a = n%cnt;
if(book[a]!=0)
{
flag = false;
break;
}
book[a]++;
cnt++;
}
if(flag)
cout<<"Yes\n";
else
cout<<"No\n";
return 0;
}