回答編集履歴

2

計算式の改善

2019/09/13 01:39

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  N = 100
12
12
 
13
- cnt = ((N-1)*N*(N+1))//6 + (N-1)*N - ((N*N)//4)
13
+ cnt = ((N-1)*N*(N+7))//6 - (N*N)//4
14
14
 
15
15
  print(cnt)
16
16
 

1

アルゴリズムの改善について追記

2019/09/13 01:39

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -2,4 +2,18 @@
2
2
 
3
3
 
4
4
 
5
+ ---
6
+
5
- (このプログラムならオーダーをO(1)にする方法ありまが…)
7
+ 9/13追記:出力だけが目当てなら、次の式使えば、O(1)にすること可能で
8
+
9
+ ```python3
10
+
11
+ N = 100
12
+
13
+ cnt = ((N-1)*N*(N+1))//6 + (N-1)*N - ((N*N)//4)
14
+
15
+ print(cnt)
16
+
17
+ ```
18
+
19
+ なぜこれで計算できるのかは、そこまで難しい話でもないので、投稿者さんの課題ということにしておきます。