步步夺金

步步夺金

步步夺金

题目链接:

http://acm.ocrosoft.com/problem.php?cid=2241&pid=3

题目描述

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表示用户当天点击“签到”。

输出

输出数据仅一行,表示n天后该用户所拥有的金币总数,保留一位小数。 样例输入 6 600 1 2300 1 5000 1 56000 1 80000 0 57000 1

样例输出

9.8 题目类型:模拟 思路 一个变量记录连续签到的天数,之后按照题目的条件判断能赚的金币加起来即可

#include

#include

#include

#include

#include

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;

}

printf("%.1f",sum);

}

相关推荐

2025清修体验终极指南:10大维度教你选对修行地 (数据截止至2025年8月)
矢量转换器
beat365英超欧冠比分

矢量转换器

📅 06-28 👁️ 3632
Win10安装软件提示“你必须取消阻止该发布者才能运行此软件”如何修复
关于如何辨别NPN三极管以及区分三个引脚(集电极、基极、发射极)
为什么“十赌九输”?
【思想政治育人】大学生为什么要学习毛概这门课?
LOL电玩时代魔法引擎活动地址
第八期:守门员从站住位置作出的爆发性扑救
请问九秒贷是真的贷款软件吗?怎么样,好不好用?