题解 AT3853 【Otoshidama】

题目传送门

暴力枚举题。

分析

Step 1:定义两个变量,(n)(y)

	int n,y;
	cin>>n>>y;

Step 2:使用二重循环进行暴力枚举。

	for(int i=0;i<=n;i++)
		for(int j=0;j<=n-i;j++)
			if(i*10000+j*5000+(n-i-j)*1000==y)
				cout<<i<<' '<<j<<' '<<n-i-j<<'
',exit(0);

在这一步上很多大佬使用了三重循环,其实用二重循环就可以解决了。

Step 3:找完了还是没有符合要求的数。直接输出-1 -1 -1并结束程序。

	cout<<"-1 -1 -1
";

完整代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n,y;
	cin>>n>>y;
	for(int i=0;i<=n;i++)
		for(int j=0;j<=n-i;j++)
			if(i*10000+j*5000+(n-i-j)*1000==y)
				cout<<i<<' '<<j<<' '<<n-i-j<<'
',exit(0);
	cout<<"-1 -1 -1
";
	return 0;
}

若题解有问题请私信我。

原文地址:https://www.cnblogs.com/tearing/p/12371856.html