题意:TeamA request B pages。按照这个形式输入第A个队伍需要打印B张纸。然后定义s=(s*x+y)%mod。当打印的纸张数>=s时,便会重新打印这个队伍的纸张。按照要求输出。
#include <iostream>
#include <stdio.h>
using namespace std;
struct p
{
int num;
char name[25];
} a[1005];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,s,x,y,mod;
char ss[25],sss[25];
scanf("%d%d%d%d%d",&n,&s,&x,&y,&mod);
for(int i=0; i<n; i++)
{
scanf("%s%s%d%s",&a[i].name,&ss,&a[i].num,&sss);
}
int coun=0;
for(int i=0; i<n; i++)
{
coun+=a[i].num;
if(coun<=s)
{
printf("%d pages for %s\n",a[i].num,a[i].name);
}
else
{
printf("%d pages for %s\n",s-(coun-a[i].num),a[i].name);
coun=0;
s=(s*x+y)%mod;
i--;
}
}
printf("\n");
}
return 0;
}