1+2+3+ ・・・ +nの和

 投稿者:山中和義  投稿日:2016年 6月 8日(水)18時53分25秒
  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

 

戻る