本文目錄一覽:
- 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;
}
下面是我自測的結果:
原創文章,作者:MACCK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/313608.html