模拟 J Contest Print Server

 

题目传送门

 1 /*  2  题意:每支队伍需求打印机打印n张纸,当打印纸数累计到s时,打印机崩溃,打印出当前打印的纸数,s更新为(s*x+y)%mod  3  累计数清空为0,重新累计  4  模拟简单题:关键看懂题意  5  注意:打印机一张一张纸打印,当某支队伍打印完正好累计到s时,要输出0,坑点!  6 */  7 #include <cstdio>  8 #include <cmath>  9 #include <algorithm> 10 #include <iostream> 11 #include <cstring> 12 using namespace std; 13 14 int cnt[110]; 15 char ss[110][22]; 16 17 int main(void) //J Contest Print Server 18 { 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 Team1 64 5 pages for Team2 65 1 pages for Team3 66 67 1 pages for Team1 68 3 pages for Team2 69 5 pages for Team2 70 1 pages for Team3 71 */

 

你可能感兴趣的:(server)