裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

排他的 n 乗数

2016年06月13日 | ブログラミング

「排他的 n 乗数」と呼ばれる数は,
    (a) 10 進数で表記したときに,同じ数字を含まない
    (b) n 乗した結果(10 進数表記)に,元の数に現れる数字が含まれない
というもので,例えば,608 は,608^3=224755712 なので「排他的3乗数」,284 は 284^4 = 6505390336 なので「排他的4乗数」である。

しかし,22^2=484 は,条件 (a) に合わないので 22 は「排他的 2 乗数」ではなく,123^4=228886641 は,条件 (b) に合わないので,123 は「排他的 4 乗数」ではない。

2 つの正の整数 m と n があるとき,m より小さい「排他的 n 乗数」のうち,もっとも大きな値を求めよ。そのようなものがない場合には "-" を返すものとする。

以下の R プログラムでは,時間が掛かりすぎる。

func = function(m, n) {
  options(scipen=100)
  for (i in (m-1):1) {
    a = unlist(strsplit(as.character(i), ""))
    if (!any(table(a) > 1)) {
      b = unlist(strsplit(as.character(i^n), ""))
      if (!any(b %in% a)) return(i)
    }
  }
  return("-")
}

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村