http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2056
题意就是打印机打印纸张。但是有一个坑点就是 当打印纸张非常多的时候的处理过程。之后就是 当打印完成后当记录打印的纸张数==最大纸张数s,的时候s要改变,并且cnt归零。
我不知道什么原因- -一样的代码原来写的就WA,这次自己重写一次就过了
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string>
#include <string.h>
#define mxas 2200202
#define mme(i,j) memset(i,j,sizeof(i))
#define ll long long
#define bug(x) puts(x);
using namespace std;
char name[2005],temp[2005];
ll pages;
ll cnt;
int main()
{
int t;
long long int n,x,y,mod,s;
scanf("%d",&t);
while(t--)
{
cnt=0;
cin>>n>>s>>x>>y>>mod;
for(int i=0;i<n;i++)
{
cin>>name>>temp>>pages>>temp;
// cnt is used paper in printer
if(cnt+pages>s)
{
printf("%lld pages for %s\n",s-cnt,name);
cnt =0;
s = (s*x+y)%mod;
cnt =cnt + pages;
while(1)
{
if(cnt<=s)
break;
printf("%lld pages for %s\n",s,name);
cnt =0;
cnt+=pages;
s = (s*x+y)%mod;
}
if(cnt == s)
{
cnt =0;
s = (s*x+y)%mod;
}
printf("%lld pages for %s\n",pages,name);
}
else{
printf("%lld pages for %s\n",pages,name);
cnt= cnt+pages;
}
}
puts("");
}
return 0;
}