본문 바로가기

코딩 테스트/Project Euler @ kr

33) 이상한 방법으로 약분할 수 있는 분수 찾기

반응형

http://euler.synap.co.kr/prob_detail.php?id=33


Skillist 설명---------------------------------------------------------------------------------


for(int i=11;i<99;i++){ //i는 분자

if(i%10!=0 && i%11!=0){ //진부한 수 PASS

double first1 = i%10; //분자의 10의자리

double second1 = (i/10)%10; //분자의 1의자리

for(int j=i+1;j<100;j++){ //j는 분모

if(j%10!=0 && j%11!=0){ //진부한 수 PASS

double first2 = j%10; //분모의 10의자리

double second2 = (j/10)%10; //분모의 1의 자리

if(first1 == first2){ //분자의 10의 자리 = 분모의 10의자리 

if((double)i/(double)j == second1/second2){

up *= second1;

down *= second2;

}

}else if(first1 == second2){//분자의 10의 자리 = 분모의 1의자리

if((double)i/(double)j == second1/first2){

up *= second1;

down *= first2;

}

}else if(second1 == first2){//분자의 1의 자리 = 분모의 10의자리

if((double)i/(double)j == first1/second2){

up *= first1;

down *= second2;

}

}else if(second1 == second2){//분자의 1의 자리 = 분모의 1의자리

if((double)i/(double)j == first1/first2){

up *= first1;

down *= first2;

}

}

}

}

}

}

for(int i=100;i>1;i--){ //약분

if(up%i==0 && down%i==0){

up/=i;

down/=i;

i+=1; //똑같은 숫자로 다시 약분

}

}

System.out.println(up + " / " + down);

}

반응형