步步夺金li(c++)

题目描述
Ivy所在的公司想推出一款手机APP“步步夺金”,该APP可以统计用户每天走路的步数,并给予相应的“金币”奖励。在用户的“金币”达到一定数量后,就可以在公司的网站上兑换一定的体育用品。
根据走路步数x奖励金币的规则如下:
1、每天的前1000步可领取0.3金币(若未达到1000步则领取数量为零),之后的每2000步能领取0.1金币。为了引导用户适量运动,每天领取的金币数量不能超过3。
2、用户只有在APP中点击“签到”才能领取当天步数对应的金币。
3、为了让用户能够每天坚持使用该APP,在用户连续三天签到后,从第四天开始,用户每天“签到”时领取的金币数可以在原金币计算方法的基础上乘以2(当然前提是在第四天时用户也点击“签到”,并且领的金币最多不能超过6)。但之后只要有一天中断点击“签到”,则又要重新连续签到三天,在第四天时才能继续获得金币加倍的优惠。
Ivy的任务是,根据用户每天所走步数以及签到的情况,统计用户n天后所拥有的金币总数。请帮助Ivy设计这个程序。

输入
输入共有n+1行,第一行包含一个正整数n,表示需要统计该用户n天后的金币总数。接下来有n(1<=n<=100)行,每行两个正整数,xi(1<=xi<=100000)和fi(1或0),分别表示第i天时用户所走的步数以及当天该用户是否进行了签到。fi为0表示用户当天未点击“签到”,为1表示用户当天点击“签到”。

码如下:

#include<iostream>
#include<map>
#include<set>
#include<vector>
#include<string>
using namespace std;
int main() {
    int n,cnt=0,step,flag;
    double sum=0;
cin>>n;
while(n--){
    cin>>step>>flag;//步数是否签到 
    double ans=0;//这一天可赚金币 
    if(flag==1)
    cnt++;//连续签到天数+1 
    else{
    cnt=0;//连续签到天数归零 
    continue;}
    if(step>=1000)//大于1000步时赚钱 
    ans=0.3+(step-1000)/2000*0.1;
    if(ans>=3)//最多赚3金币 
    ans=3;
    if(cnt>=4)//连续4天签到当天金币翻倍 
    ans=ans*2;
    sum+=ans;
}
以上就是答案

希望喜欢 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值