1071. 小赌怡情(15)
这里不多废话,先吐槽下这道题,就是这段话:
输入格式:
输入在第一行给出2个正整数T和K(<=100),分别是系统在初始状态下赠送给玩家的筹码数、以及需要处理的游戏次数。随后K行,每行对应一次游戏,顺序给出4个数字:
n1 b t n2
其中n1和n2是计算机先后给出的两个[0, 9]内的整数,保证两个数字不相等。b为0表示玩家赌“小”,为1表示玩家赌“大”。t表示玩家下注的筹码数,保证在整型范围内。
我觉的大部分人都会想到用随机数生成两个数n1,n2,然后判断这两个数是否相等,相等的话重新生成n2。所以我一开始就采用了随机数,部分代码如下:
int n1,b,t,n2;
srand(time(0));
n1=rand()%10;
printf("%d",n1);
cin>>b;
cin>>t;
n2=rand()%10;
if(n1==n2) {
n2=rand()%10;
} else {
printf("%d",n2);
}
这里要说明下如果只调用rand()这个函数它生成的随机数是固定值的,而加上srand()函数就可以为rand()函数生成随机数种子,每次运行rand()函数的结果就会大不相同。而其中time(0)返回系统时间。之后提交提示多种错误,但我运行结果自我感觉没毛病,之后百度了网上答案后吐血的发现竟然是自己输入n1,n2,也是很无语T.T,相信我不是一个人这样吧。
吐槽完了,回到这题,作为PAT乙级中每五题的第一题,这道题并不难,简单的if判断就可以,唯一要注意的就是格式问题了,不要少个句号,少个空格就可以了。废话不多说,直接看下面代码:
#include <iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main() {
int T,K;
cin>>T>>K;
int n1,b,t,n2;
for(int i=0; i<K; i++) {
cin>>n1>>b>>t>>n2;
if(T<t) {
cout<<"Not enough tokens. Total = "<<T<<"."<<endl;
} else if((n1<n2&&b==1)||(n1>n2&&b==0)) {
T=T+t;
cout<<"Win "<<t<<"! Total = "<<T<<"."<<endl;
} else {
T=T-t;
cout<<"Lose "<<t<<"."<<" Total = "<<T<<"."<<endl;
}
if(T<=0) {
cout<<"Game Over."<<endl;
break;
}
}
}