452!(階乗)の3の指数はいくらか?
452!= 3533506829824763928727384642597107197831211820353954676258140892378737430591719484842642260981825120362035921971649789196675115546082203998272013021160900137514685970918482818713992418765221526987327078501115242807775483042412779688924340813969157000183682820272417582028489728147095129657183124291540458544042008042308380209909521405261876650259890680856773620209537637283796820053989247467149927627961552294580550952469260983442106755636337923358986227938968407629525884163551160250413810663393375726553978267372218225149951277125676798635196020745367822389395617923504943624125663319680434143005773774604463235049693710573430697836267162808939901956973469135147732902625853854071028668714544129217566600618356409313276875853809090798339243992641683705023568437935027990326287472932723871360087563484400872035948548998162682529960398228018792200024088672237899492243427383271259922886532530176000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
この問題の場合n=452としてn-(nの3進法での表現の各桁の和)=(3の指数)×(3-1)
という関係式があります.10進数の 452 は 3 進数では121202です。
したがって452-(1+2+1+2+0+2)=(3の指数)×(3-1)。
ゆえに3の指数=222と求まります。
ついでに10進数を3進数などに変換するプログラムも載せておきます。
INPUT PROMPT "変換したい10進数を入力してください":変換したい数
FOR n=2 TO 9 ! 2進数から9進数まで
LET target=変換したい数
LET s$=""
DO WHILE target<>0
LET amari=MOD(target,n) !余りを求めています
LET s
LET target=INT(target/n) !商を求めています
LOOP
LET h=LEN(s$)
LET ss$=""
FOR g=h TO 1 STEP -1 !数字を逆順に並べかえます
LET ss
NEXT G
REM --------------------------------------
PRINT "10進数の";変換したい数;"は";n;"進数では"; ss$;"です。" !結果を出力します
NEXT n
END
上の問題で7の指数を求めてみます。
452-(1+2+1+4)=(7の指数)×(7-1)。
7の指数=74
452!を素因数分解したときの3の指数を求める問題でした。