列表

详情


NC204271. 斩杀线计算大师

描述

算术能力是每个炉石玩家必不可少的,假设现在有三种伤害卡,伤害值分别是。并且每种伤害卡的数量你可以认为是无限的。现在牛牛想知道是否存在一种方式可以刚好造成点伤害,输出分别表示三种伤害卡的使用个数。
数据保证一定存在解。如果存在多组解,输出任意一组。

输入描述

一行四个整数分别表示.

输出描述

一行输出三个整数分别表示.

示例1

输入:

3 4 5 20

输出:

4 2 0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 8ms, 内存消耗: 376K, 提交时间: 2020-04-01 20:03:17

#include<stdio.h>
main()
{
	int a,b,c;
	int x=0,y=0,z=0;
	long long k;
	scanf("%d%d%d%lld",&a,&b,&c,&k);
	for(x=k/a;x>=0;x--)
	{
		for(y=(k-x*a)/b;y>=0;y--)
		{
			for(z=(k-x*a-y*b)/c;z>=0;z--)
			{
				if(a*x+b*y+c*z==k)
				{
					printf("%d %d %d",x,y,z);
					return 0;
				}
			}
		}
	}
}

C++(clang++11) 解法, 执行用时: 155ms, 内存消耗: 408K, 提交时间: 2020-11-10 16:23:30

#include<iostream>
using namespace std;
int main(){
	long long a,b,c,k;
	cin>>a>>b>>c>>k;
	for(long long i=0;i*c<=k;++i){
		for(long long j=0;j*b<=k;++j){
			if((k-i*c-j*b)%a==0){
				cout<<(k-i*c-j*b)/a<<" "<<j<<" "<<i;
				return 0;
			}
		}
	}
}

上一题