Problem C: 剁手女生节
Description
由于女生节准备到了,ming打算给班上女生送一份大礼。没错,就是数学练习册!
ming先前就已经收藏了 n 本练习册了,一直不舍得做,这次突然决定把它们都拿出来当作礼物送出去!
但是,ming班上一共有 4 个女生,为了不要显得自己偏爱哪一个,他觉得每个女生都应该分到同等数量的练习册。
这样的话,原来的 n 本就可能不太够了。于是他去逛亚马当商城。
他发现,最近ACM(Association of Counting Method)又出版了好多新版数学练习册:高数、线代、离散、概率论…
而且商店有三种促销优惠套餐:
第一种:任选 1 本练习册,送欧几里德主题套尺。只需 a 个比特币;
第二种:任选 2 本练习册,送莱布尼兹同款2B铅笔。只需 b 个比特币;
第三种:任选 3 本练习册,送爱因思坦专用橡皮擦。只需 c 个比特币。
那么问题来了:吃土ming如何用最少的比特币购买若干本练习册,使得全部(包括原来的n本)可以平分给四个女生?
Input
每组输入是一行四个整数:n,a,b,c(1 <= n,a,b,c <= 1e9)意思如题目描述。
Output
对每组输入,输出一行一个整数,表示ming要花的最少的比特币数。
Sample Input
Sample Output
这道题WA了几个小时真是我SB 一道数学题
总结教训
写题别急 ,交上去WA还不如等十分钟检查一下AC的成绩好
做啥题都要先想好 想全面再写,放心 你想题的时候 别人也不会比你多A几道题(除非你不会)
列出所有的情况
当 缺一本时
可以 a 或者 b+c 【a表示第一种方案】 解释一下 第二种和第三种方案获得 5本 也可以满足情况,当方案1特别贵 2 3很便宜时是正确的
当缺2本时
可以 a+a 或者 b 或者 c+c
当缺3本时
可以 a+a+a 或者 b+b+b 或者 c
当不缺的时候
那就是0了
其实这道题考的就是你数学细心不 都能想到 但是你能想漏,别人AC 你WA
(做题别急 做好做稳才是正道)
#include<stdio.h>
long long min(long a,long b)
{
if(a>=b)
return b;
else
return a;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long n,a,b,c;
scanf("%lld%lld%lld%lld",&n,&a,&b,&c);
long long m,x;
m=4-(n%4);
if(m==4)
{
printf("0\n");
}
if(m==1)
{
x=min(a,3*c);
x=min(x,b+c);
printf("%lld\n",x);
}
if(m==2)
{
x=min(2*a,b);
x=min(x,2*c);
printf("%lld\n",x);
}
if(m==3)
{
x=min(3*a,c);
x=min(a+b,x);
printf("%lld\n",x);
}
}
return 0;
}