1 /* 2 题意:每支队伍需求打印机打印n张纸,当打印纸数累计到s时,打印机崩溃,打印出当前打印的纸数,s更新为(s*x+y)%mod 3 累计数清空为0,重新累计 4 模拟简单题:关键看懂题意 5 注意:打印机一张一张纸打印,当某支队伍打印完正好累计到s时,要输出0,坑点! 6 */ 7 #include8 #include 9 #include 10 #include 11 #include 12 using namespace std;13 14 int cnt[110];15 char ss[110][22];16 17 int main(void) //J Contest Print Server18 {19 //freopen ("J.txt", "r", stdin);20 21 int t;22 while (scanf ("%d", &t) == 1)23 {24 while (t--)25 {26 int n, s, x, y, mod;27 scanf ("%d%d%d%d%d", &n, &s, &x, &y, &mod);28 29 for (int i=1; i<=n; ++i)30 scanf ("%s request %d pages", &ss[i], &cnt[i]);31 32 int num = 0, j;33 int ok = 0;34 for (int i=1; i<=n; ++i)35 {36 if (ok == 1) printf ("%d pages for %s\n", 0, ss[i]);37 ok = 0;38 for (j=1; j<=cnt[i]; ++j)39 {40 num++;41 if (num == s)42 {43 printf ("%d pages for %s\n", j, ss[i]);44 s = (s * x + y) % mod;45 if (s == 0) s = (s * x + y) % mod;46 num = 0; break;47 }48 }49 if (j < cnt[i]) i--;50 else if (j == cnt[i]) ok = 1;51 else printf ("%d pages for %s\n", cnt[i], ss[i]);52 }53 if (t) puts ("");54 }55 56 }57 58 59 return 0;60 }61 62 /*63 1 pages for Team164 5 pages for Team265 1 pages for Team366 67 1 pages for Team168 3 pages for Team269 5 pages for Team270 1 pages for Team371 */