4番目の力(Juzuk)


8

1939年、ジュズクは自然数の4乗を生成する方法を説明しました。次のように自然数をグループ化します。

1   2 3   4 5 6   7 8 9 10   11 12 13 14 15   ...

2番目のグループごとにスクラッチします。

1   4 5 6   11 12 13 14 15 ...

残りのn個のグループの合計はn ** 4です。

  • 入力:なし
  • タスク:Juzukの方法を使用して、100 ** 4までの4乗を出力します。
  • 出力

    0(オプション)1 16 81 ... 100000000


6
問題を簡単に解決することができないような言語の詳細を禁止することは許容できると思いますが、「ジュズクの方法を使用する」というルールは好きではありません。それが取ることが許可されているn-1ために計算するときのアカウントで結果をnn(n+1)/2式を使用して整数和を簡略化することはできますか?いつジュズクの方法ではなくなりますか?
sam hocevar

修辞的な質問?
steenslag 2011年

回答:


3

J、40 38(不要な合計ではない

+/\+/"1(+:i.100){(#~i.201)[/.>:i.20100

J、30(合計は不要)

+/\_2{.\(#~i.201)+//.>:i.20100

4

J、33

~.+/\(#~i.200)(+/*2|#)/.1+i.2!200

後でスクラッチするグループを合計すると、コードサイズが最適化されますが、「この方法で実装する」という状況では、私は奪われたように感じます;)
JB

@JB:ええと...私 Juzukの方法を使用しています。ゼロを合計するだけです:)
Eelvex

3

Haskell、78

print[sum$concat$take x[take x$drop(sum[1..x-1])[1..]|x<-[1,3..]]|x<-[0..100]]
[0,1,16,81,256,625,1296,2401,4096,6561,10000,14641,20736,28561,38416,50625,65536,...

少し異なる出力フォーマットで問題ないことを願っています。これをHaskellで書くにはもっと良い方法があると思いますが、私はこれを私があまり使用しない言語で解決したいと思いました。


3

Python 2、68

すばやくて汚いPythonソリューション:

s=0
for n in range(100):s+=sum(range(2*n*n+n+1,2*n*n+3*n+2));print s
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.