|
問題
ある正の整数があります。
この整数は、一の位の数を先頭(最上位の数の前)に移動させると、もとの整数の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桁
|
|