【数论】[NOI Online #1 入门组]文具订购

L i n k Link

l u o g u   P 6188 luogu\ P6188

D e s c r i p t i o n Description

在这里插入图片描述

S a m p l e Sample I n p u t Input 1 1

1

S a m p l e Sample O u t p u t Output 1 1

-1

S a m p l e Sample I n p u t Input 2 2

14	

S a m p l e Sample O u t p u t Output 2 2

1 1 1

S a m p l e Sample I n p u t Input 3 3

33

S a m p l e Sample O u t p u t Output 3 3

1 2 6

H i n t Hint

在这里插入图片描述

T r a i n Train o f of T h o u g h t Thought

先枚举总共可以组多少套(其实就是圆规的套数)
若无法组成完整一套,则不断缩减圆规套数以扩大总数

C o d e Code

#include<iostream>
#include<cstdio>

using namespace std;

int n, b;

int main()
{
	scanf("%d", &n);
	if (n == 0) {printf("0 0 0"); return 0;} 
	
	for (int i = n / 14; i >= 0; --i) {//枚举圆规数量
		for (int j = i; j * 4 + i * 10 <= n; ++j) { //枚举笔的数量,这里笔记本暂定为和圆规买的套数一样
			for (int k = i; k * 3 + j * 4 + i * 7 <= n; ++k)//枚举笔记本
	  		if (7 * i+ 4 * j + 3 * k == n) {//若满足条件直接输出,因为题目给了最优解唯一
				printf("%d %d %d", i, j, k);
				return 0;
			} 
		} 
	}
	printf("-1");
}

猜你喜欢

转载自blog.csdn.net/LTH060226/article/details/107503800