|
1+2+3+・・・+nの和が数字の0から9までをただ一度ずつ含むのは何処まで足した時だろう?
例 1+2+3+・・・+46097=46097×46098÷2=1062489753
考察
s=n(n+1)/2より、n^2+n-2s=0 ∴n=(-1±√(1^2-4*1*(-2s)))/(2*1)=(-1±√(8s+1))/2
nが整数なので、(8s+1)は平方数である必要がある。
また、sは0から9までの数を並べ替えた10桁の数である。
したがって、順列を考えればよい。
1から9までの数の場合、プログラムのkを10として10が先頭の並びを考えればよい。
(終わり)
DECLARE EXTERNAL SUB perm
DIM a(20)
LET k=10
MAT a=ZER(k)
FOR i=1 TO k
LET a(i)=i
NEXT i
CALL perm(a,1)
END
EXTERNAL SUB perm(a(),n)
LET m=UBOUND(a)
IF n=m THEN
!!!MAT PRINT a;
LET s=0 !n桁の数
FOR i=1 TO m
LET s=s*10+MOD(a(i),10)
NEXT i
LET t=8*s+1 !平方根の中
IF INT(SQR(t))^2=t THEN PRINT s; (-1+SQR(t))/2 !s,n
ELSE
FOR i=n TO m
LET t=a(i)
FOR j=i-1 TO n STEP -1
LET a(j+1)=a(j)
NEXT j
LET a(n)=t
CALL perm(a,n+1)
LET t=a(n)
FOR j=n TO i-1
LET a(j)=a(j+1)
NEXT j
LET a(i)=t
NEXT i
END IF
END SUB
2016年6月6日
1+2+3=6
1+2+3+ ・・・ +11=66
1+2+3+ ・・・ +36=666
|
|