Problem 52 - Project Euler
これもまた問題の意味が分かりにくかった."contain exactly the same digits"ってのは数字の種類と回数が両方あってないとダメって意味で言ってるのかな.
なんとなく全部の桁の数値が異なってないとダメなような気がして判定を入れたけど,あまり考えていない.もしかするとたまたまうまく行っただけかもしれない.
数値の種類と回数が同じじゃないとダメなら一番左の桁が1じゃないとダメなので,一番左の桁は6回変わる=最低6桁必要なのは分かる.
まあすぐ終わったからいいか.
toDig <- function(n){ floor(n/(10^(0:floor(log(n,10)))))%%10 } dig.setequal <- function(a, b){ setequal(toDig(a), toDig(b)) } num <- 10^5 while(1){ count <- 0 if(length(toDig(num))==length(intersect(toDig(num), toDig(num*2))) && dig.setequal(num, num*3) && dig.setequal(num, num*4) && dig.setequal(num, num*5) && dig.setequal(num, num*6)) break num <- num + 1 if(num > 10^floor(log(num,10))*2) num <- 10^(floor(log(num,10)+1)) }