ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

1からNまでの和

1からNまでの整数の和を求める方法は、

for文によるループ処理で求められます。

n = 10        # 1から10までの和を求める
sum = 0     # 1からnまでの和の答え
for i in range(n):
    sum += i + 1
# sum = 55

 

その他の方法として次の公式からも求められます。

n = 10                         # 1から10までの和を求める
sum = int(n * (n + 1) / 2)     # 1からnまでの和の答え
# sum = 55

 

どちらも同じ答えが求まりますが、for文では1からNまでの値を足し合わせるためN回計算を行うことになります。

競プロではプログラムの実行時間に制限があるため、計算量を減らす工夫が必要なる場合があります。

また、僕のようにプログラミング自体が遅い人はfor文を使うとさらに時間がかかってしまいますので、公式を使って解くように心掛けるようになりました。

競プロをされてる方々にはセオリーなのだと後から気づきましたが、僕はそんなことも知らずにコンテストに出てTLEが表示されてめちゃくちゃ焦りました。

そんな無謀なことを繰り返していますが、少しずつでも学んでいきたいと思います。