好累想睡覺
2006-10-11 17:58:48 UTC
※ 引述《qrtt1 (愚者)》之銘言:
: ※ 引述《aeifkz (好累想睡覺)》之銘言:
: : 發現真的很難寫 難怪上傳上去的語言 Java 頗少的 ( 泣~~QQ )
: : 光是開頭的第一個規則 程式要寫在 class Main 裡面
: : 就花了我半天的時間 (我承認我沒有好好的看規則 XD )
: : 好不容易解決了 compiler error 的問題
: : 想不到.......
: : 之後出來的一直都是 Wrong Answer
: : 可是我自己測試樣本數據都對 @@
: : 目前也才開始寫第100題 3n + 1
: : 想不到挫折感還蠻大的....
: : 不知道大家的經驗怎麼樣 ??
: : 我現在有點打算不上傳了...自己寫爽的就好了 ╮(﹀_﹀")╭
: 第一個數要比第二個數小,才不會有wrong answer
: 題目給你的數,不一定會是小的在前面
感謝版友的回答...所以還是 po 一下程式碼好了
輸入的部分是參考之前有人 po 過的輸入方式
黃字的不部分 是我判斷過兩個輸入數字的大小關係
判斷後做為 for 迴圈的初始值和判斷值
import java.io.*;
import java.util.*;
class Main
{
//參考之前版友 po 的輸入部分
static String ReadLn (int maxLg)
{
byte lin[] = new byte [maxLg];
int lg = 0, car = -1;
String line = "";
try
{
while (lg < maxLg)
{
car = System.in.read();
if ((car < 0) || (car == '\n')) break;
lin [lg++] += car;
}
}
catch (IOException e)
{
return (null);
}
if ((car < 0) && (lg == 0)) return (null); // eof
return (new String (lin, 0, lg));
}
public Main () // entry point from OS
{
Begin() ;
}
private void Begin()
{
String input;
StringTokenizer idata;
int a, b ;
while ((input = Main.ReadLn (255)) != null)
{
idata = new StringTokenizer (input);
a = Integer.parseInt (idata.nextToken()) ;
b = Integer.parseInt (idata.nextToken()) ;
int max = 0 , temp = 0 ;
[m[1;33mif( a > b )[m
{
for(int k = (b) ; k<(a+1) ; k++)
{
temp = caluculate(k) ;
if(max < temp)
max = temp ;
}
}
[m[1;33melse[m
{
for(int k = (a) ; k<(b+1) ; k++)
{
temp = caluculate(k) ;
if(max < temp)
max = temp ;
}
}
System.out.print(a + " " + b + " " + max ) ;
}
}
public int caluculate(int data)
{
int length = 0 ;
while(data!=1)
{
if( (data%2) == 1 )
{
data = data * 3 + 1 ;
}
else
{
data = data / 2 ;
}
length = length + 1 ;
}
length = length + 1 ;
return length ;
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.52
※ 編輯: aeifkz 來自: 163.25.118.52 (10/12 09:58)
: ※ 引述《aeifkz (好累想睡覺)》之銘言:
: : 發現真的很難寫 難怪上傳上去的語言 Java 頗少的 ( 泣~~QQ )
: : 光是開頭的第一個規則 程式要寫在 class Main 裡面
: : 就花了我半天的時間 (我承認我沒有好好的看規則 XD )
: : 好不容易解決了 compiler error 的問題
: : 想不到.......
: : 之後出來的一直都是 Wrong Answer
: : 可是我自己測試樣本數據都對 @@
: : 目前也才開始寫第100題 3n + 1
: : 想不到挫折感還蠻大的....
: : 不知道大家的經驗怎麼樣 ??
: : 我現在有點打算不上傳了...自己寫爽的就好了 ╮(﹀_﹀")╭
: 第一個數要比第二個數小,才不會有wrong answer
: 題目給你的數,不一定會是小的在前面
感謝版友的回答...所以還是 po 一下程式碼好了
輸入的部分是參考之前有人 po 過的輸入方式
黃字的不部分 是我判斷過兩個輸入數字的大小關係
判斷後做為 for 迴圈的初始值和判斷值
import java.io.*;
import java.util.*;
class Main
{
//參考之前版友 po 的輸入部分
static String ReadLn (int maxLg)
{
byte lin[] = new byte [maxLg];
int lg = 0, car = -1;
String line = "";
try
{
while (lg < maxLg)
{
car = System.in.read();
if ((car < 0) || (car == '\n')) break;
lin [lg++] += car;
}
}
catch (IOException e)
{
return (null);
}
if ((car < 0) && (lg == 0)) return (null); // eof
return (new String (lin, 0, lg));
}
public Main () // entry point from OS
{
Begin() ;
}
private void Begin()
{
String input;
StringTokenizer idata;
int a, b ;
while ((input = Main.ReadLn (255)) != null)
{
idata = new StringTokenizer (input);
a = Integer.parseInt (idata.nextToken()) ;
b = Integer.parseInt (idata.nextToken()) ;
int max = 0 , temp = 0 ;
[m[1;33mif( a > b )[m
{
for(int k = (b) ; k<(a+1) ; k++)
{
temp = caluculate(k) ;
if(max < temp)
max = temp ;
}
}
[m[1;33melse[m
{
for(int k = (a) ; k<(b+1) ; k++)
{
temp = caluculate(k) ;
if(max < temp)
max = temp ;
}
}
System.out.print(a + " " + b + " " + max ) ;
}
}
public int caluculate(int data)
{
int length = 0 ;
while(data!=1)
{
if( (data%2) == 1 )
{
data = data * 3 + 1 ;
}
else
{
data = data / 2 ;
}
length = length + 1 ;
}
length = length + 1 ;
return length ;
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.52
※ 編輯: aeifkz 來自: 163.25.118.52 (10/12 09:58)