问题 D: 有解吗?
时间限制: 1 Sec 内存限制: 64 MB提交: 540 解决: 73
[ 提交][ 状态][ 讨论版]
题目描述
给出方程a * 1234567 + b * 123456 + c * 1234 = n。其中a、b、c均为非负整数变量,n(1 <= n <= 10 ^ 9)为给出整数常量。判断方程是否有解。
输入
一个整数n。
输出
如果有解,输出“YES”;无解,输出“NO”。
样例输入
1234567
样例输出
YES
提示
题目主要尽量需要控制和减少循环的次数,控制时间是关键。
附上ac代码:
#include<iostream>
using namespace std;
int main()
{
long long int n;
cin>>n;
int k=n/1234567;
for(int i=0;i<k+1;i++)
{
for(int j=0;;j++)
{
int c=n-1234567*i-j*123456;
if(c<0)
break;
if(c%1234==0)
{
cout<<"YES"<<endl;
return 0;
}
}
}
cout<<"NO"<<endl;
}