数の巡回

 投稿者:山中和義  投稿日:2013年10月25日(金)19時26分58秒
  問題
ある正の整数があります。
この整数は、一の位の数を先頭(最上位の数の前)に移動させると、もとの整数の3倍になるそうです。
このような整数のうち最も小さい数を答えてください。

考察
求める正の整数をNとする。この整数は、K桁の数で一の位の数をXとする。
題意より、(N*3)*10+X -N=X*10^K ∴N=X*(10^K-1)/(30-1)

式の意味 ※実際の計算は正しくない
N=1234なら、1234*3=4123なので、4123*10+4-1234=40000=4*10^4
(終り)



OPTION ARITHMETIC RATIONAL !多桁の整数
LET A=3
LET K=1 !桁数
LET B=10*A-1
DO
   FOR X=1 TO 9
      LET N=X*(10^K-1)/B !nを求めて
      IF N=INT(N) AND N>=10^(K-1) THEN EXIT DO !k桁の整数なら
   NEXT X
   LET K=K+1 !桁数を増やす
LOOP
PRINT K; "桁 "; N; "×"; A; "="; N*A
END


実行結果

28 桁  1034482758620689655172413793 × 3 = 3103448275862068965517241379




その2 中学生向け

例 142857 の場合 ※桁数が少ないので採用した

  142857
 ×     5
 ---------
      35
     25
    40
   10
  20
  5
 ---------
  714285

の筆算を逆から辿っていくと、

     142857
   ----------
 5 ) ⑦
     5
   ------
     2①
     20
   -------
      1④
      10
     ------
       4②
       40
     -------
        2⑧
        25
      -------
         3⑤
         35
      -------
          0⑦


LET A=3
FOR X=1 TO 9 !末尾の数字の候補
   PRINT X;": ";

   LET Y=X
   LET K=0 !桁数
   DO
      LET K=K+1
      LET T=INT(Y/A) !商
      PRINT STR$(T);
      LET R=Y-T*A !余り
      LET Y=R*10+T
   LOOP UNTIL T=X AND R=0 !商に末尾の数字が現れて、余りが0になる
   PRINT " "; STR$(K); "桁"

NEXT X
END


実行結果

1 : 0344827586206896551724137931 28桁
2 : 0689655172413793103448275862 28桁
3 : 1034482758620689655172413793 28桁
4 : 1379310344827586206896551724 28桁
5 : 1724137931034482758620689655 28桁
6 : 2068965517241379310344827586 28桁
7 : 2413793103448275862068965517 28桁
8 : 2758620689655172413793103448 28桁
9 : 3103448275862068965517241379 28桁




 

戻る