Python
 Computer >> コンピューター >  >> プログラミング >> Python

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() で数値に戻して加算していくシンプルな構造です。なお、ここでは反復処理を使っていますが、再帰関数を用いて同様の計算を実装することも可能です。

  1. Pythonでグラフの頂点間の到達可能性行列を計算するプログラム

    隣接リスト形式で表現されたグラフが与えられたとき、次のような条件を満たす2次元行列Mを求めることを考えます。M[i, j] = 1:頂点iから頂点jへの経路(パス)が存在する場合M[i, j] = 0:経路が存在しない場合例えば、次のようなグラフが入力として与えられたとします。この場合の出力は、以下の5×5の行列になります。1111101111011110111101111解法のアプローチこの問題は、各頂点を起点とした幅優先探索(BFS)を用いることで効率的に解くことができます。具体的な手順は以下の通りです。n×nの2次元行列「ans」を作成し、すべての要素を0で初期化します(nは頂点の総数)

  2. Pythonで正四面体の表面積を計算するプログラム(√3×a²の公式)

    本記事では、正四面体の表面積を求める問題の解き方とそのアプローチについて詳しく解説します。 問題文 正四面体の一辺の長さが与えられたとき、その正四面体の表面積を求める必要があります。 正四面体とは 正四面体(Tetrahedron)とは、三角形を底面としたピラミッドのような形状の立体図形です。4つの三角形の面(側面に3つ、底面に1つ)と、4つの頂点(角)を持つ立体オブジェクトです。 計算式 一辺の長さを a とすると、正四面体の表面積は次の公式で求められます。 表面積 = √3 × a² この公式をもとに、以下のように面積を計算する関数を定義します。 サンプルコード import math