CF922C Cave Painting题解--zhengjun

    科技2024-06-08  71

    其实是一道结论题。

    因为模完之后一定有 k k k 个取模后的结果,而每一个取模之后的结果都在 [ 0 , k − 1 ] [0,k-1] [0,k1]中。

    n % 1 = 0 n\%1=0 n%1=0

    n % 2 n\%2 n%2 不能和 n % 1 n\%1 n%1 的结果相同,所以 n % 2 = 1 n\%2=1 n%2=1

    同理得, n % 3 = 2 n\%3=2 n%3=2

    ⋯ \cdots

    n % k = k − 1 n\%k=k-1 n%k=k1

    所以,直接验证皆可以了。

    优化:如果 k > 20 k>20 k>20 直接输出 N o No No

    代码

    #include<bits/stdc++.h> using namespace std; #define ll long long ll n,k; int main(){ scanf("%lld%lld",&n,&k); if(!n&&!k)return 1; if(k>20)return printf("No\n"),0; ll p=1; for(int i=1;i<=k;i++)if(n%i!=i-1)return printf("No\n"),0; printf("Yes"); return printf("\n"),0; }
    Processed: 0.011, SQL: 8