Humble Numbers
http://acm.pku.edu.cn/JudgeOnline/problem?id=2247
素因数に2,3,5,7のいずれかしか持たない数を求める問題。但し"1"だけはHumble Numberとして考えるみたい。入力Nに対して出力が1から数えてN番目のHumble Numberだから、最初にHumble Numbersの配列を作っておけばよさそうだ。id:dai_yashさんがTLEと戦ってらっしゃるので、ついついやってみたのだが、トラックバックしてしまうと見たい見たくないにかかわらずソースモロ見えスマソ(;´д`)
っちゅうわけで、せめて改行をいっぱい入れとくことにする・・・。今日はJava〜
import java.util.*;class Main {
public static void main(String a[]){
int i,N;
int humble[] = new int[6000];
int prime2=1, prime3=1, prime5=1, prime7=1;humble[1] = 1;
for( i=2;i<=5842;++i ){
int min1 = Math.min( 2*humble[prime2], 3*humble[prime3] );
int min2 = Math.min( 5*humble[prime5], 7*humble[prime7] );
humble[i] = Math.min( min1, min2 );if( humble[i] == 2*humble[prime2] ) ++prime2;
if( humble[i] == 3*humble[prime3] ) ++prime3;
if( humble[i] == 5*humble[prime5] ) ++prime5;
if( humble[i] == 7*humble[prime7] ) ++prime7;
}Scanner c=new Scanner(System.in);
while(c.hasNext()){
N=c.nextInt();
if( N == 0 ) break;String counter = "th";
if( (N/10)%10 != 1 ){
switch( N%10 ){
case 1: counter = "st"; break;
case 2: counter = "nd"; break;
case 3: counter = "rd"; break;
}
}System.out.println("The "+N+counter+" humble number is "+humble[N]+".");
}
}
}