题解 CF898B 【Proper Nutrition】

本题的确可以用 exgcd 做,但对于数论不扎实的而言 exgcd 求的是形如 ax+by=n\large ax+by=n 的通解,即 x,yZ\large x,\, y \in Z,本题求的是 x,y0\large x,\, y \ge 0 的解,所以直接来个 O(an)\Large O(\frac{a}{n}) 的暴力就好了。

代码:

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
	int a, b, n;
	cin >> n >> a >> b;
	for (register int i = 0; i <= n / a; i++)
	{
		if ((n - i * a) % b == 0)
		{
			cout << "YES\n";
			cout << i << " " << (n - i * a) / b << endl;
			//system("pause");
			return 0;
		}
	}
	cout << "NO\n";
	//system("pause");
	return 0;
}
posted @ 2021-01-09 09:00  HappyBobb  阅读(9)  评论(0)    收藏  举报  来源