您的位置:

oj题目的输入输出java(java oj输入输出)

本文目录一览:

北大OJ的1012题java做出莫名奇妙的runtime error

这样的检测没有进行有效地检测

当m = 5 以后,计算量比较大,时间就太长。。

#include stdio.h

void POJ1012();

//int result[]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};

int main()

{

POJ1012();

return 0;

}

void POJ1012()

{

int i,k;

int result[14]={0};

scanf("%d",k);

while(k!=0)

{

// printf("%d\n",result[k]);

int leftguys,m,flag,cur,next;

i=1;

while(true)

{

if(result[k]!=0)

{

printf("%d\n",result[k]);

break;

}

//m为移动的个数,cur为移动前索引,以0为起点

//m只能为k+1的整数倍或者是k+1的整数倍加1,

//因为只剩下K+1个人时,cur索引必位于k或k+1上

m=(k+1)*i;

for(int j=0;j2;j++)

{

cur=-1;

flag=true;

for(leftguys=2*k;leftguysk;--leftguys)

{

next = (cur+m)%leftguys;

if(nextk)

{

flag=false;

break;

}

cur = next-1;

}

if(flag)

{

printf("%d\n",m);

result[k]=m;

break;

}

m=(k+1)*i+1;

}

if(flag)

break;

++i;

}

scanf("%d",k);

}

}

ACM竞赛,用JAVA编程,如果不知道输入数据的数量,怎样写?还有输入输出的格式是怎样的?

1. 我想到的解决办法如下:

A. 第一项输入输入数量,随后按数量输入;

B. 设定一个结束符,输入了这个结束符以后,则输入结束;

C. 这个比较变态,做另一个线程监听上次输入时间,如果过了指定时间还没输入,则输入结束。

2. 你这样写至少有两个问题:

A. output没有flush;

B. 没有处理异常。

这道ACM题目怎么用JAVA做出来。。主要是输入格式问题:数据格式为YYYY/MM/DD组成,

public int getDays(String date){//输入格式要求是用斜杠“/”来分隔年月日

int y = Integer.parseInt(date.substring(0,4));

int m = Integer.parseInt(date.substring(5,date.lastIndexOf("/")));

int d = Integer.parseInt(date.substring(date.lastIndexOf("/")+1));

if(m==1){return d;}

if(m==2){return 31+d;}

int days = 0;

for(int i=1;im;i++){

if(i==1 || i==3  || i==5  || i==7  || i==8  || i==10  || i==12 ){days += 31;}

else if(i != 2){days += 30;}

else{

if((y%4 == 0 y%100 !=0)|| (y%4==0 y%400 == 0)){days += 29;}

          else{days += 28;}

}

}

days += d;

return days;

}

下面是我自测的结果: