4104 ldq 的遗产

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lv414333532/article/details/79961935

ldq 的遗产

Time Limit: 10000 ms Memory Limit: 65536 KiB

Problem Description

我,李东庆,打钱!!!

ldq最近很无聊,于是他把自己投身到一些数学问题中,他说如果有人能解决他的问题,他就会把他从梁山那里继承的遗产全都给你!他坚信没人能解决他的问题,因此也就从他那里拿不到一分钱。

 哈哈!显然,ldq对自己的才智过于骄傲!但是,他的问题是什么?

“现在有一些硬币(三种类型, 1, 2, 5),其数量是num_1,num_2和num_5,请输出用这三种硬币不能组成的最小钱数。”

你,超级ACMer,应该很容易解决这个问题,如果你解决了这个问题,别忘了从ldq那里拿25,000,000美元!

Input

输入包含多个测试用例。

首先输入一个T(1<=T<=10)代表测试组数

每个测试用例包含3个正整数num_1,num_2和num_5

(0 <= num_i < = 100)。

Output

输出一个整数y,代表 用现有的这三种硬币不能组成的最小钱数。

Sample Input

2
1 1 3
0 0 0

Sample Output

4
1

Hint

Source

axuhongbo 


思路:三重for循环暴力出所有能够组合出的结果,标记,扫描找为被标记;


#include <iostream>
#include <cstring>
using namespace std;
int A[10000];
int main()
{

    int n, num_1,num_2,num_5;
    int MAX,tmp;
    while(cin>>n)
    {

        while(n--)
        {

                cin>>num_1>>num_2>>num_5;

            MAX=5*num_5+3*num_2+num_1;
            memset(A,0,sizeof(A));
            for(int i=0; i<=num_1; i++)
            {
                for(int j=0; j<=num_2; j++)
                {
                    for(int k=0; k<=num_5; k++)
                    {
                        tmp=i+j*2+k*5;
                        A[tmp]=1;
                    }
                }
            }
            for(int i=1; i<MAX; i++)
            {
                if(!A[i])
                {
                    tmp=i;
                    cout<<i<<endl;
                    break;
                }
            }
            if(tmp==MAX)
            {
                cout<<MAX+1<<endl;
            }

        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/lv414333532/article/details/79961935