北大的acm1006怎么runtime error?

来源:百度知道 编辑:UC知道 时间:2024/06/18 12:13:36
代码贴上,很短的:
#include<iostream>
using namespace std;
int main()
{
int p,e,i,d;
int y;
int x[12];
int t=0;
for(cin>>p>>e>>i>>d;p!=-1||e!=-1||i!=-1||d!=-1;t++){
for(y=d,y++;((y-p)%23!=0)||((y-e)%28!=0)||((y-i)%33!=0);y++);
y-=d;
x[t]=y;
cin>>p>>e>>i>>d;
}
x[t]=-1;
for(t=0;x[t]!=-1;t++)cout<<"Case "
<<t+1<<": the next triple peak occurs in "
<<x[t]<<" days."<<endl;
return 0;
}
为什么runtime error?

但是它的sample里不是处理一个输出一个的阿 它是先全部输入完毕 然后开始输出阿

谁告诉你只有12组测试数据呢...
我把x[12]定义为x[1000]就ac了...
其实你可以作出一个就输出一个,这样就不需要数组来记录了
例如这样:
#include<iostream>
using namespace std;
int main()
{
int p,e,i,d;
int y;
int x;
int t=0;
for(cin>>p>>e>>i>>d;p!=-1||e!=-1||i!=-1||d!=-1;t++){
for(y=d,y++;((y-p)%23!=0)||((y-e)%28!=0)||((y-i)%33!=0);y++);
y-=d;
x=y;
cout<<"Case "<<t+1<<": the next triple peak occurs in "<<x<<" days."<<endl;
cin>>p>>e>>i>>d;
}

return 0;
}
它的输入输出是分开判断的,不像我们看时是在一个屏幕上,只要你的程序得到样例的输入后的输出加起来是样例的输出就行了,poj上都是这样的,所以你可以放心的分开输出