链接:https://ac.nowcoder.com/acm/contest/221/J
来源:牛客网
题目描述
国庆十天假,死肥宅选择回家休息,休息期间死肥宅开始了他的召唤师峡谷冲分之旅,冲分之前死肥宅向其他队员打赌十天内必上王者,已知死肥宅初始段位为黄金,因为死肥宅是游戏鬼才,所以他可以控制每天的段位变化不会超过一个大段,每天都会有队员查看下死肥宅的段位,如果死肥宅上了一个大段那么就会在小本本上记一个1,如果大的段位没有变化那么就会在小本本上记一个0,如果掉了一个大段,那么就记一个7,但是存在一些特殊情况使得队员记录的数字代表的意义会发生一些改变(详情可看备注)十天后,我们可以得到一个10个数字的序列,试着根据这串序列算出死肥宅是否上了王者,如果死肥宅成功的话那么请输出“666”,否则请输出“777"。
输入描述:
多组输入,每行输入10个数字,只包含1,0,7,三个数字。
输出描述:
10天后如果死肥宅的段位达到王者,输出"666";否则输出"777"。
备注:
段位晋级规则为:
黄铜 -> 白银 -> 黄金 -> 白金 -> 钻石 -> 大师 -> 王者
特殊状况:
如果降到黄铜,且下一天仍然没有升段,因为黄铜下面没有其他段位,那么记录信息的队员会在7和0中随机记录一个,7和0都代表当前段位没有发生变化。
如果升到王者,且下一天仍然没有掉段,因为王者之上没有其他段位,那么记录信息的队员会在0和1中随机记录一个,1和0都代表当前段位没有发生变化。
PS:题目意思很好理解,烦人的是输入终止条件和输入方式
#include<iostream> #include<string.h> #include<math.h> using namespace std; int main() { int f[15]; int m; while (~scanf("%d",&m)) { if(m!=1&&m!=0&&m!=7) { break; } f[0]=m; for(int i=1;i<10;i++) { scanf("%d",&f[i]); } int num = 10; for (int i = 0; i<10; i++) { if (f[i] == 1&&num != 14) ++num; else if (f[i] == 7&&num != 8) --num; } if (num == 14) printf("666 "); else printf("777 "); } return 0; }