なぜかJAVAで参戦。Python使わせてください。
とりあえず、過去問で練習してます。
だめだめですけど、自分の解答を載せます。
TopCoder SRM 430 DIV 2
Problem 500 BitwiseEquations
問題文(アカウントがないと見られません)
public class BitwiseEquations {
public long kthPlusOrSolution(int x, int k) {
long a = 0, shift = 0;
while(k > 0) {
if((x & 1) == 0) {
a |= ((long)(k & 1) << shift);
k >>>= 1;
}
x >>>= 1;
shift++;
}
return a;
}
}xを2進数で表示したときに0になる桁に、kの2進数の1桁目から入れていく感じ。問題文からこのことを理解できれば解ける。結構時間かかった。
TopCoder SRM 427 DIV 2
Problem 250 LoveCalculator
問題文
import java.util.Arrays;
public class LoveCalculator {
public String findBoy(String girl, String[] boys) {
if(boys.length == 1) return boys[0];
Arrays.sort(boys);
int[] love = new int[boys.length];
for(int i = 0; i < boys.length; i++) {
int L = 0, O = 0, V = 0, E = 0;
for(int j = 0; j < girl.length(); j++) {
if(girl.charAt(j) == 'L') {
L++;
} else if(girl.charAt(j) == 'O') {
O++;
} else if(girl.charAt(j) == 'V') {
V++;
} else if(girl.charAt(j) == 'E') {
E++;
}
}
for(int j = 0; j < boys[i].length(); j++) {
if(boys[i].charAt(j) == 'L') {
L++;
} else if(boys[i].charAt(j) == 'O') {
O++;
} else if(boys[i].charAt(j) == 'V') {
V++;
} else if(boys[i].charAt(j) == 'E') {
E++;
}
}
love[i] = ((L+O)*(L+V)*(L+E)*(O+V)*(O+E)*(V+E))%100;
}
int max = love[0], maxI = 0;
for(int i = 1; i < love.length; i++) {
if(love[i] > max) {
maxI = i;
max = love[i];
}
}
return boys[maxI];
}
}そのまんま。コード汚い。
0 件のコメント:
コメントを投稿