teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

計算式の改善

2019/09/13 01:39

投稿

majiponi
majiponi

スコア1722

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  9/13追記:出力だけが目当てなら、次の式を使えば、O(1)にすることが可能です。
5
5
  ```python3
6
6
  N = 100
7
- cnt = ((N-1)*N*(N+1))//6 + (N-1)*N - ((N*N)//4)
7
+ cnt = ((N-1)*N*(N+7))//6 - (N*N)//4
8
8
  print(cnt)
9
9
  ```
10
10
  なぜこれで計算できるのかは、そこまで難しい話でもないので、投稿者さんの課題ということにしておきます。

1

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

2019/09/13 01:39

投稿

majiponi
majiponi

スコア1722

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