SRM454 DIV2 過去問
250 - MinimalDifference
整数A, B, Cが与えられる。
A<=X<=Bかつ、Xの各桁の合計とCの各桁の合計が最も近いXを返せ。
該当するXが複数ある場合は一番小さいやつ返せよな!っていう問題。
public class MinimalDifference { public int findNumber(int A, int B, int C) { if(A==B) return A; int cc = calcDigitSum(C); int che = Integer.MAX_VALUE; int res = 0; for(int i=(A>B?B:A); i<=(A>B?A:B); i++){ int tmp = Math.abs(calcDigitSum(i) - cc); if(tmp<che) { che = tmp; res = i; } } return res; } public int calcDigitSum(int n){ String s = Integer.toString(n); int ds = 0; for(int i=0; i<s.length(); i++){ ds += Character.digit(s.charAt(i), 10); } return ds; } }
charをintにキャストしたらそりゃだめだよねうん
それと問題文の理解にちょっと手間取った
500は2時間くらい粘ったけど自力で解けなかった
その後topの人のを参考にして書いちゃったので載せてもしかたねぇ
1000は無理