1016 - 坑爹的黑店

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

今天小明去了一个风景如画的地方散心,但是自己带的饮料喝完了,小明口渴难耐,见不远处有家小商店,于是跑去买饮料。

小明:“我要买饮料!”

店主:“我们这里有三种饮料,矿泉水1.5元一瓶,可乐2元一瓶,橙汁3.5元一瓶。”

小明:“好的,给我一瓶矿泉水。”

说完他掏出一张N元的大钞递给店主。

店主:“我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿。”

小明:“......”

小明环顾四周,就这一家商店,况且实在太渴了,就决定在这买了。不过小明想,与其把钱当小费送给他还不如自己多买一点饮料,反正早晚都要喝,但是要尽量少让他赚小费。

现在小明希望你能帮他计算一下,最少他要给店主多少小费。

题目输入

输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量。然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表小明手中钞票的面值,以分为单位。
注意:商店里只有题中描述的三种饮料。

题目输出

对于每组测试数据,请你输出小明最少要浪费多少钱给店主作为小费,以分为单位。

输入/输出样例

输入格式

2
900
250

输出格式

0
50

C语言解答

#include<stdio.h>

int main()
{
	int t,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		if(n<150)
			printf("%d\n",n);
		else if(n<=200||n>=300)
			printf("%d\n",n%50);
		else
			printf("%d\n",n-200);
	}
	return 0;
}

C++解答

#include<stdio.h>

int main()
{
	int t,n;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		if(n<150)
			printf("%d\n",n);
		else if(n<=200||n>=300)
			printf("%d\n",n%50);
		else
			printf("%d\n",n-200);
	}
	return 0;
}

Java解答

public class Main {
            public static void main(String[] args) { 
              java.util.Scanner input = new java.util.Scanner(System.in) ;
              int n = input.nextInt();
         for(int l =0;l <n;l++){
             int N = input.nextInt();
             int a = N/350;
             int b = N/200;
             int c = N/150;
             int max = 0;
             for(int i=0;i<=a;i++){
                 for(int j=0;j<=b;j++){
                     for(int k = 0;k<=c;k++){
                         if(i*350+j*200+k*150>max&&i*350+j*200+k*150<=N)
                         max=i*350+j*200+k*150;
                        }
                    }
                }
               System.out.println(N-max);
            }
        }
    }
             

Python解答

import itertools,sys

def check(m,data):
    result = []
    for i in range(1,len(data)+1):
       for j in itertools.combinations(data,i):
           n,cash = divmod(m,sum(j))
           result.append(cash)
    return min(result)

i = 1
data = [150,200]
for line in sys.stdin:
    a = line.split()
    if i!=1:
          if  int(a[0])<300:
              print check(int(a[0]),data)
          else:
              print int(a[0])%50
    i += 1