三角数パターンを出力するPythonプログラムの書き方
数値 n が与えられたとき、n 行からなる三角形のパターンを出力するプログラムを考えてみましょう。i 行目には、行番号 i をちょうど i 回繰り返した数字を表示します。
例えば、入力が n = 5 の場合、出力は次のようになります。
1 22 333 4444 55555
解き方のアプローチ
この問題は、以下の手順でシンプルに解くことができます。
- i を 1 から n まで順番に繰り返します。
- (10i) を 9 で割った整数部分に i を掛けた値を表示します。
- 改行して次の行へ移ります。
実装例
それでは、実際のPythonコードを見てみましょう。
def solve(n):
for i in range(1, n+1):
print((10**i) // 9 * i)
n = 8
solve(n)
入力
8
出力
1 22 333 4444 55555 666666 7777777 88888888
仕組みの解説
このプログラムのポイントは (10**i) // 9 という計算式です。10 を i 乗した値を 9 で割ると、「1」が i 個並んだ数(レピュニットと呼ばれます)が得られます。これに i を掛けることで、数字 i が i 個並んだ数値を一瞬で作り出せるのです。
例えば i = 3 の場合、103 = 1000 を 9 で割ると 111 になり、さらに 3 を掛けると 333 が求まります。ループや文字列操作を使わず、算術演算だけでパターンを生成できるのがこの手法の魅力です。
-
PythonでN番目のフィボナッチ数を求める方法|再帰と動的計画法を解説
この記事では、Pythonを使ってN番目のフィボナッチ数を計算する方法を解説します。 フィボナッチ数とは フィボナッチ数は、次の漸化式によって定義される数列です。 Fn = Fn-1 + Fn-2 初期値は F0 = 0、F1 = 1 となります。したがって、フィボナッチ数列の最初のいくつかの項は以下のようになります。 0, 1, 1, 2, 3, 5, 8, 13, ………… フィボナッチ数を求めるには、大きく分けて「再帰」と「動的計画法」の2つのアプローチがあります。それぞれの実装方法をPythonスクリプトで見ていきましょう。 方法1:再帰を使うアプローチ まずは最も直感的な再帰による実
-
PythonでN番目のカタラン数を計算する方法【再帰・動的計画法】
本記事では、N番目のカタラン数(Catalan number)を求める方法について解説します。カタラン数とは、以下の漸化式で定義される自然数の数列です。$$c_{0} = 1\;and\; c_{n+1} = \displaystyle\sum\limits_{i=0}^nc_{i} c_{n-i}\; for n\geq 0 ;$$n = 0, 1, 2, 3, … に対するカタラン数は、1, 1, 2, 5, 14, 42, 132, 429, …… と続いていきます。カタラン数は、再帰(リカージョン)と動的計画法(DP)のどちらの手法でも求めることができます。それでは、それぞれの実装方法