Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 86 Solved: 18
[Submit][Status][Web Board]
Description
zbj最近特别想喝可乐,然而可口可乐有一个万年梗的活动就是....四个瓶盖换一瓶可乐的活动
现在zbj想喝n瓶可乐,一瓶可乐需要k元,问他最少需要花多少钱?
ps.一瓶可乐只有一个瓶盖..当然这不是脑筋急转弯,zbj并不能向别人借瓶盖。
Input
有多组样例,每一行输入一个正整数n,k(0<=n<=100000000 1<=k<=200) (请不要嘲讽zbj能喝...我们要友好和谐)
Output
每一行输出一个正整数表示zbj最小需要花的钱
Sample Input
1597 3
Sample Output
3594
ZCMU-1854-zbj的可乐 - ZCMUCZX的博客 - CSDN博客
【解析】这道题其实有个公式,sum=n+(n-1)/(k-1),这里k是指几个瓶盖能换一瓶饮料,n是指买多少瓶饮料就能获得sum瓶的饮料。这里就是我们知道了sum,来推n了,这里是3*sum=4*n,如果3sum除4不能整除的话,就要向下取整之后再加个1才可以。不然的话比说如果sum是8,8*3是24,24+1为25,25除4是6了,而显然6瓶可乐肯定不能换8瓶,需要7瓶才能换,所以要再加1.--------------------- 作者:MooAiFighting 来源:CSDN 原文:https://blog.csdn.net/ZCMUCZX/article/details/54744763 版权声明:本文为博主原创文章,转载请附上博文链接!
*4 1(第一次需要买4瓶,然后会送一瓶)3 1(后面都是只需要买3瓶,然后会送一瓶)3 13 1。。。需要考虑到数据类型int不够还需要考虑到如果n<=4的情况*/
#include<queue>
#include<stdio.h>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
/*int b[3],book[101][101][101],half;
struct node{
int cur[3],s;
}p,temp;
void bfs{
queue<node> q;
p.cur[0]=b[0];
}*/
int main(){
long long n,num,s;
int k;
while(~scanf("%lld%d",&n,&k)){
if(n!=0){
num=(n*3)+1;
if(num%4==0)
num/=4;
else num=num/4+1;
s=num*k;
printf("%lld\n",s);
}
else if(n==0)
printf("0\n");
}
return 0;
}
网友评论