蜗蜗国最近很流行一个游戏,名字叫做“蜗蜗荣耀”。在这个游戏里,有排位赛的机制。玩家一开始拥有一个 0 星账号,如果能够得到 50星,那么就意味着他(她)达到了最强的蜗蜗王者级别。
要如何得到星呢?要通过不断胜利来获取。规则如下:
如果连胜一场(比如只赢了一场就是连胜一场),则总共获得一颗星,如果连胜两场,第二场胜利可以获得 2颗星,总共获得 1 + 2 = 3 颗星,如果连胜三场,则总共获得 1 + 2 + 3 = 6 颗星,如果有一次战败,则连胜状态就结束了。同样,如果连败也是会掉星的(丢失星星),如果连败一场,则总共丢掉 1 颗星,如果连败两场,第二场失败会丢掉 2 颗星,总共丢掉 1 + 2 = 3 颗星,如果连败三场,则总共丢掉 1 + 2 + 3 = 6颗星。但是如果已经没有星星了,也就不会丢失了,只会维持在0星状态。如果有一次获胜,则连败状态就结束了。
小蜗蜗最近和朋友打赌,自己能够达到蜗蜗王者。他总共打了 n场比赛,每场比赛的结果用 0 和 1 来表示, 0 表示败了, 1 表示胜了,请你帮他算一算,打完以后他是不是蜗蜗王者。如果是的话,请输出Yes,如果不是,请你计算出,假设他接下来每一场都是胜利的,那么至少还需要几场才能够达到蜗蜗王者,注意,连胜状态是持续的,例如打过的 n 场中的倒数第二场是失败而最后一场是胜利,那么额外打的第一场会获得二颗星,因为这是连胜的第二场。
输入格式
第一行一个正整数 n。
接下来一行,一共 n个数( 0 或者 1 ),中间用空格隔开,表示这 n场蜗蜗的胜败状态。
输出格式
一行, 如果达到了(最后星数 ≥50)则为一个字符串Yes,否则为一个整数,表示蜗蜗至少还需要几场胜利才能够达到蜗蜗王者。
![](https://profile-avatar.csdnimg.cn/021ee5cfdeed4b37bff5613626de19b1_errorowo.jpg!4)
代码源#C++#的蜗蜗荣耀怎么写?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 2301_76671950 2023-04-07 20:04关注
#include<bits/stdc++.h> using namespace std; int n; int a[5001]; int sum=1,bug=1,dw=0,wc=0,wnm=0; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); switch (a[i]) { case 0: if(dw-sum>=0){ bug=1; dw=dw-sum; sum++; } else{ dw=0; sum++; } break; case 1: sum=1; dw=dw+bug; bug++; break; } } if(dw>=50){ printf("Yes"); } else{ wc=50-dw; while(wc>0){ wc=wc-bug; bug++; wnm++; } printf("%d",wnm); } return 0; }
解决 3无用
悬赏问题
- ¥30 靶向捕获探针设计软件包
- ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
- ¥20 遥感植被物候指数空间分布图制作
- ¥15 安装了xlrd库但是import不了…
- ¥20 Github上传代码没有contribution和activity记录
- ¥20 SNETCracker
- ¥15 数学建模大赛交通流量控制
- ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
- ¥50 paddleocr最下面一行似乎无法识别
- ¥15 求某类社交网络数据集