传送门:http://codeforces.com/contest/681/problem/B
思路:最朴素的想法是用三重循环枚举 a,b,c ,但是其实用两重循环枚举 a,b ,再检查是否存在满足条件的c即可。
代码:
#include <bits/stdc++.h>
using namespace std;
#define ll __int64
const int inf=0x3f3f3f3f;
const int N=3e5+10;
ll n;
int main(){
scanf("%lld", &n);
ll a=1234567, b=123456, c=1234;
for(ll i=0; ; i++){
if(i*a>n)break;
for(ll j=0; ; j++){
int res=n-a*i-b*j;
if(res<0)break;
if(res%c == 0){
puts("YES");
exit(0);
}
}
}
puts("NO");
return 0;
}