zcmu-1854 zbj的可乐

【题述】

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瓶的瓶盖换了一瓶,注意⚠️:换的这瓶的瓶盖别忘了计数)

 +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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值