题解 CF681B 【Economy Game】

· · 题解

CF681B Economy Game

原题链接

题面

给定一个正整数 n (1<n<10^9) ,判断是否存在自然数 a,b,c 满足 a×1234567+b×123456+c×1234=n

思路

十分明显,这道题就是道暴力枚举的题目。没想到这道题是怎么上黄的。 当然,直接三重循环枚举 a,b,c 是否满足条件会超时,不过循环2次以 a,bc可否满足是可以过的。不说了,直接上代码。

#include<bits/stdc++.h>
using namespace std;
#define LL long long//没必要开long long,数据在1e9范围内
int main(){
    LL n;
    cin>>n;
    for(LL a=0;a<=n/1234567;a++){
        for(LL b=0;b<=(n-a*1234567)/123456;b++){
            if((n-a*1234567-b*123456)%1234==0){//判断c是否可取整
                cout<<"YES";
                return 0;
            }
        }
    }
    cout<<"NO";//没找到满足条件的c
    return 0;
}

轻松AC,数据点最多也只用了15ms,整道题总用时也只有662ms,还是比较少时间的,排在最优解第二名,也算不错了。一道黄题就做完了,再见qwq。