本文目录一览:
- 1、北大OJ的1012题java做出莫名奇妙的runtime error
- 2、ACM竞赛,用JAVA编程,如果不知道输入数据的数量,怎样写?还有输入输出的格式是怎样的?
- 3、这道ACM题目怎么用JAVA做出来。。主要是输入格式问题:数据格式为YYYY/MM/DD组成,
北大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;
}
下面是我自测的结果: