tozangezan's diary

勝手にソースコードをコピペして利用しないでください。

SRM過去問 SRM483 Div1Easy

せっかくなので昨日のDiv1Easy解いてみました。
どうやらC++ではいろいろ大変だったみたいですがJavaだといろいろと楽でした。
(double->Stringが使える)最後に"0000000000"ってたくさん追加しないといけないですね。

public class BestApproximationDiv1{
	public String findFraction(int a,String b){
		int max=0;
		int maxB=0;
		int maxC=0;
		for(int i=1;i<=a;i++){
			for(int j=0;j<i;j++){
				double takeshi=(double)j/(double)i;
				String kiyoto=String.valueOf(takeshi);
				kiyoto+="0000000000000";
				int sames=0;
				for(int k=0;k<Math.min(kiyoto.length(),b.length());k++){
					if(kiyoto.charAt(k)==b.charAt(k))sames++;
					else break;
				}
				if(max<sames-1){
					max=sames-1;
					maxB=i;
					maxC=j;
				}
			}
		}
		System.out.println(21.0/50.0);
		return maxC+"/"+maxB+" has "+max+" exact digits";
	}
}

これで228.05pt。やっぱりJava結構便利。