问题 J:Contest Print Server
时间限制: 1 Sec 内存限制: 128 MB
题目描述
In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source code any time. Here you need to write a contest print server to handle all the requests.
输入
In the first line there is an integer T(T<=10),which indicates the number of test cases.
In each case,the first line contains 5 integers n,s,x,y,mod (1<=n<=100, 1<=s,x,y,mod<=10007), and n lines of requests follow. The request is like “Team_Name request p pages” (p is integer, 0
You can get more from the sample.
输出
Every time a request is completed or the printer is break down,you should output one line like “p pages for Team_Name”,p is the number of pages you give the team “Team_Name”.
Please note that you should print an empty line after each case.
样例输入 Copy
2
3 7 5 6 177
Team1 request 1 pages
Team2 request 5 pages
Team3 request 1 pages
3 4 5 6 177
Team1 request 1 pages
Team2 request 5 pages
Team3 request 1 pages
样例输出 Copy
1 pages for Team1
5 pages for Team2
1 pages for Team3
1 pages for Team1
3 pages for Team2
5 pages for Team2
1 pages for Team3
题意是:有一台打印机,打印的时候如果累计打印到 s 张还没有将当前任务打印完,那么就会重新打印着一份文件,在此之前 s 会重新生成一个,生成的方式是== s = (s * x + y) % mod; ==
代码没什么东西,但是有一个坑点,虽然开始输入的 s 是一个>=1的数,但是如果重新生成的s为0的话,就会再次重新生成一个 s
code:
int T = read;
while(T--){
n=read,s=read,x=read,y=read,mod=read;int sy=s;
for(int i=1;i<=n;i++){
char s1[50],s2[50],s3[50];
int tot;
scanf("%s%s%d%s",s1,s2,&tot,s3);
if(tot<=sy){
printf("%d pages for %s\n",tot,s1);
sy -= tot;
}else{
while(1){
if(tot <= sy){
printf("%d pages for %s\n",tot,s1); sy-=tot;
break;
}else{
printf("%d pages for %s\n",sy,s1); s=fun();
if(s==0) s=(s*x+y)%mod;
sy=s;
}
}
}
}
puts("");
}