Pythonで数列 n + nn + nnn + …(m項)の合計を計算する方法
はじめに
本記事では、Pythonを使って「n + nn + nnn + …」という規則性のある数列の合計を計算するプログラムを作成します。まずは、プログラムへの入力と出力の例を確認しておきましょう。
Input: 3 4 3 + 33 + 333 + 3333 Output: 3702
Input: 5 5 5 + 55 + 555 + 5555 + 55555 Output: 61725
このように、2つの数値 n と m が与えられ、「n を桁数分だけ繰り返した数」を順番に並べた数列の最初の m 項の合計を求めます。以下の手順に従って実装していきましょう。
アルゴリズム
1. 数値 n と m を初期化する。
2. 変数 change を宣言し、初期値として n を代入する。
3. 合計を格納する変数 s を 0 で初期化する。
4. m 回繰り返すループを記述する。
4.1. change の値を s に加算する。
4.2. change の値を更新して、数列の次の項を生成する。
5. ループ終了後、合計 s を出力する。数列の各項を生成するには、汎用的な式を作る必要があります。ポイントは「前の項を10倍して n を足す」という規則性に気づくことです。まずは自分で考えてみてください。ロジックが思いつかない場合は、以下のコードを参考にしてください。
コード例1
## n と m を初期化
n, m = 3, 4
## 変数 change を n で初期化
change = n
## 合計 s を 0 で初期化
s = 0
## ループ処理
for i in range(m):
## change を s に加算
s += change
## change を更新して次の項を生成
change = change * 10 + n
## 合計を出力
print(s)出力結果
上記のプログラムを実行すると、次の出力が得られます。
3702
続いて、冒頭で紹介したもう一つの例についても、異なる値で試してみましょう。
コード例2
## n と m を初期化
n, m = 5, 5
## 変数 change を n で初期化
change = n
## 合計 s を 0 で初期化
s = 0
## ループ処理
for i in range(m):
## change を s に加算
s += change
## change を更新して次の項を生成
change = change * 10 + n
## 合計を出力
print(s)出力結果
このプログラムを実行すると、次の出力が得られます。
61725
まとめ
本記事では、Pythonで「n + nn + nnn + …」(m 項)の合計を計算する方法を解説しました。鍵となるのは「前の項を10倍して n を足す」という更新式であり、これをループ内で繰り返すだけで任意の項数まで対応できます。この考え方は、他の規則性のある数列の計算にも応用できるので、ぜひ覚えておきましょう。チュートリアルの内容について不明な点や疑問がある場合は、コメント欄でお気軽にお尋ねください。
-
Pythonで解くコイン両替問題:動的計画法を使った実装方法
はじめにこの記事では、コイン両替(Coin Change)問題をPythonで解く方法について詳しく解説します。動的計画法(Dynamic Programming)を活用することで、全探索よりもはるかに少ない計算量で答えを求めることができます。問題の定義額面の異なる複数のコイン(配列 S)と、その各額面が無限に供給される状況を考えます。このとき、目標金額 n を作り出す組み合わせが全部で何通りあるかを求めるのがこの問題です。なお、コインの並び順が違うだけのもの(例:「1枚+2枚」と「2枚+1枚」)は、同じ組み合わせとして1通りと数えます。単純な再帰で解くと同じ部分問題を何度も計算してしまい非効
-
Pythonで正四面体の表面積を計算するプログラム(√3×a²の公式)
本記事では、正四面体の表面積を求める問題の解き方とそのアプローチについて詳しく解説します。 問題文 正四面体の一辺の長さが与えられたとき、その正四面体の表面積を求める必要があります。 正四面体とは 正四面体(Tetrahedron)とは、三角形を底面としたピラミッドのような形状の立体図形です。4つの三角形の面(側面に3つ、底面に1つ)と、4つの頂点(角)を持つ立体オブジェクトです。 計算式 一辺の長さを a とすると、正四面体の表面積は次の公式で求められます。 表面積 = √3 × a² この公式をもとに、以下のように面積を計算する関数を定義します。 サンプルコード import math