【AtCoder】ABC273解説(Python)

パナソニックグループプログラミングコンテスト2022(AtCoder Beginner Contest 273)の解説記事です。

目次

ABC273 A – A Recursive Function

問題

問題文の要約は以下の通りです。

問題の要約

0 以上の整数 x に対して定義される以下の関数に対して f(x) を求めよ。
・ f(0) = 1
・ f(k) = k × f(k-1) (kは自然数)

入力

N

出力

 答えを整数として出力せよ。

解法1

再帰関数を定義する。

解説

問題文通りに再帰関数functionを定義します。

def function(k):

f(0) = 1より入力が0であれば1を返します。

if k==0:
  return 1

k0でなければ、k × f(k-1)を返します。

else:
  return k*function(k-1)

解答

def function(k):
  if k==0:
    return 1
  else:
    return k*function(k-1)
 
N=int(input())
print(function(N))

解法2

答えは入力Nの階乗なので1からnまでの積を計算する。

解説

答えはN!になります。
答えAnsを初期値1で用意します。
これに1からnまでを順番に掛けます。

Ans=1
for i in range(1,N+1):
  Ans*=i

解答

N=int(input())
Ans=1
for i in range(1,N+1):
  Ans*=i
print(Ans)

解法3

math.factorialを用いる

解説

Pythonで階乗はmath.factorialを用いることで求まります。

解答

import math
N=int(input())
print(math.factorial(N))
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次