【题述】
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
思路:
1.找规律:
+4瓶;(前4瓶要自己买)
免费+1瓶 ;(前4瓶的瓶盖换了一瓶,注意⚠️:换的这瓶的瓶盖别忘了计数)
扫描二维码关注公众号,回复: 2584744 查看本文章+3瓶;
免费+1瓶;
+3瓶;
免费+1瓶
+3瓶;
免费加一瓶;
...
2.总共要喝n瓶可乐,由上面找到的规律可知,每4瓶看作一次循环(注意第一次循环特殊,掏了4瓶的钱),共循环了y=n/4次,sum=4*k+(y-1)*3*k;
3.判断余数:x=n%4
x=1时,属于循环中的“免费+1瓶”,所以sum+=0;
x>1时,属于循环中要掏钱买的那部分(注意⚠️自己掏钱买的瓶数要-1,因为前面先“免费+1瓶”了)
4.n<=4时要单独判断
#include <iostream>
using namespace std;
int main(){
long long n,k,x,sum,y;
while(cin>>n>>k){
sum=0;
if(n<=4)
sum=n*k;
else{
x=n%4;
y=n/4;
sum=4*k+(y-1)*3*k;
if(x>1)
sum+=(x-1)*k;
else
sum+=0;
}
cout<<sum<<endl;
}
return 0;
}