ブルーブリッジカップ入門(Python言語)
NO.1 Fibonacci数列
問題の説明
フィボナッチ数列の再帰式は次のとおりです。Fn= Fn-1 + Fn-2、ここでF1 = F2 = 1。
nが比較的大きい場合、Fnも非常に大きくなります。ここで、Fnの余りを10007で割ったものを知りたいと思います。
入力フォーマット
入力に整数nが含まれています。
出力フォーマット
Fnの余りを10007で割った値を表す整数を含む行を出力します。
递归:
def fib(n):
if (n==1 or n==2):
return 1
else:
return fib(n-1)+fib(n-2)
print(fib(int(input()))%10007)
动态规划:
def fib(n):
# 由前往后推
a = 1
b = 1
if n <= 2:
return 1
for i in range(n - 2):
a, b = b, a + b
return b
print(fib(int(input()))%10007)
NO.2円の面積
問題の説明
円の半径rを指定して、円の面積を見つけます。
入力フォーマット
入力には、円の半径を表す整数rが含まれています。
出力フォーマット
実数を含む、小数点以下7桁に丸められた、円の面積を示す線を出力します。
サンプル入力
4
サンプル出力
50.2654825
データの規模と慣習
1 <= r <= 10000。
import math
radius = float(input())
area = math.pi * radius * radius
print('%.7f' % area)
NO.3シーケンスの合計
問題の説明
1 + 2 + 3 +…+ nの値を見つけます。
入力フォーマット
入力には整数nが含まれます。
出力フォーマット
1 + 2 + 3 +…+ nの値を表す整数を含む行を出力します。
サンプル入力
4
サンプル出力
10
サンプル入力
100
サンプル出力
5050
データの規模と慣習
1 <= n <= 1,000,000,000。
def f(n):
m=(1+n)*n/2
return int(m)
print(f(int(input())))
NO.4 A+B问题
問題の説明
入力A、B、出力A + B。
入力フォーマット
入力の最初の行には、スペースで区切られた2つの整数が含まれ、それぞれAとBを表します。
出力フォーマット
A + Bの値を表す整数を含む行を出力します。
サンプル入力
12 45
サンプル出力
57
データの規模と慣習
-10000 <= A、B <= 10000。
a=input().split()
print(int(a[0])+int(a[1]))
上記の最初の質問では90ポイント、その他の質問では100ポイントしか獲得できません。実践の過程で、アルゴリズムの優位性を考えることが非常に重要であり、蓄積と改善を続ける必要があることに気づきました。