Pythonで n + nn + nnn + …(nをm回繰り返した数)の級数の和を計算する方法
Pythonはさまざまな数学的級数をエレガントに扱うことができます。その一つが「同じ数字の繰り返し」からなる級数です。たとえば、ある1桁の数字 n に対して、まず n 自身を加え、次に2桁並べた数 nn、さらに3桁並べた数 nnn というように項を作っていき、最後にこれらすべての数の合計を求めます。
アプローチ
まず、対象となる数字を文字列に変換します。次に、その文字列を連結することで2桁の数(nn)を作り、さらに連結を繰り返すことで3桁以上の数(nnn、nnnn…)を生成していきます。そして、こうして生成されたすべての数を足し合わせる関数を実装します。文字列操作を使えば、任意の桁数の繰り返し数字を簡単に作れるのがポイントです。
サンプルコード
def sumofseries(n, m):
# 数字を文字列に変換する
str_n = str(n)
sum_n = n
sum_all_str = str(n)
for i in range(1, m):
# 文字列を連結して各項を生成する
sum_all_str = sum_all_str + str_n
sum_n = sum_n + int(sum_all_str)
return sum_n
# 入力を受け取る
n = int(input("Enter the value of n: "))
m = int(input("Enter the value of m: "))
sumofno = sumofseries(n, m)
print("Sum:>", sumofno)実行結果
上記のコードを実行すると、以下のような結果が得られます。
Enter the value of n: 2 Enter the value of m: 4 Sum:> 2468
解説
この例では n=2、m=4 を入力しているため、級数は「2 + 22 + 222 + 2222」となり、その合計は 2468 になります。ループの中で文字列を1文字ずつ連結しながら int() で数値に戻して加算していくシンプルな構造です。なお、ここでは反復処理を使っていますが、再帰関数を用いて同様の計算を実装することも可能です。
-
Pythonでグラフの頂点間の到達可能性行列を計算するプログラム
隣接リスト形式で表現されたグラフが与えられたとき、次のような条件を満たす2次元行列Mを求めることを考えます。M[i, j] = 1:頂点iから頂点jへの経路(パス)が存在する場合M[i, j] = 0:経路が存在しない場合例えば、次のようなグラフが入力として与えられたとします。この場合の出力は、以下の5×5の行列になります。1111101111011110111101111解法のアプローチこの問題は、各頂点を起点とした幅優先探索(BFS)を用いることで効率的に解くことができます。具体的な手順は以下の通りです。n×nの2次元行列「ans」を作成し、すべての要素を0で初期化します(nは頂点の総数)
-
Pythonで正四面体の表面積を計算するプログラム(√3×a²の公式)
本記事では、正四面体の表面積を求める問題の解き方とそのアプローチについて詳しく解説します。 問題文 正四面体の一辺の長さが与えられたとき、その正四面体の表面積を求める必要があります。 正四面体とは 正四面体(Tetrahedron)とは、三角形を底面としたピラミッドのような形状の立体図形です。4つの三角形の面(側面に3つ、底面に1つ)と、4つの頂点(角)を持つ立体オブジェクトです。 計算式 一辺の長さを a とすると、正四面体の表面積は次の公式で求められます。 表面積 = √3 × a² この公式をもとに、以下のように面積を計算する関数を定義します。 サンプルコード import math