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; } } }