蓝桥杯入门级别。直接上题。
跳转链接:
蓝桥杯练习系统:“蓝桥杯”练习系统 (lanqiao.cn)
编程练习系统:C语言网 - 编程入门学习 - 实用的编程在线学习网站 (dotcpp.com)
前人:蓝桥杯大佬
只能使用标准库。
input()内不能有提示。
报名参加了第十三届蓝桥杯比赛,不求得奖,但求收获,不能让300大洋白白蒸发。
A+B问题
问题描述
输入A、B,输出A+B。
输入格式
输入的第一行包括两个整数,由空格分隔,分别表示A、B。
输出格式
输出一行,包括一个整数,表示A+B的值。
问题描述
输入A、B,输出A+B。
输入格式
输入的第一行包括两个整数,由空格分隔,分别表示A、B。
输出格式
输出一行,包括一个整数,表示A+B的值。
代码部分
a,b = map(int,input().split()) print(a + b)
理解:入门题,让你信心大增。
一次性接收输入只能用一个input()函数。
用空格分隔,直接用字符串方法split()。
需要转变为整型,进而运算,用map()函数将分隔的列表对int()函数映射。
两个变量用逗号分隔接收列表元素。
拓展: 无限循环,异常处理
while True: try: a,b=map(int,input().strip().split()) print(a+b) except: break
序列求和
问题描述
求1+2+3+...+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+...+n的值。
#不正确
n = int(input())
total = 0
for i in range(1,n+1):
total += i
print(total)
问题描述
求1+2+3+...+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+...+n的值。
原因:循环遍历从1到n累加求和,超时。
正解:使用等差序列求和公式。其次注意输出的值为整型,使用int()函数转换。
n = int(input()) total = 0.5*n*n + 0.5*n print(int(total))
圆的面积
问题描述
给定圆的半径r,求圆的面积。
输入格式
输入包含一个整数r,表示圆的半径。
输出格式
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
import math
r = float(input())
s = math.pi * r * r
print("{:.7f}".format(s))
问题描述
给定圆的半径r,求圆的面积。
输入格式
输入包含一个整数r,表示圆的半径。
输出格式
输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。
理解:使用math标准库中的math.pi。
格式化输出字符串(保留7位小数)
Fibonacci数列
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
def fun(n):
if n == 1 or n == 2:
return 1
else:
return fun(n-1) + fun(n-2)
n = int(input())
m = fun(n)
print(m%10007)
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
理解:函数递归思想——函数内调用函数。但是很遗憾,递归的方法运行超时。
使用一种特殊赋值方法:
a,b = b,a+b;意思是先计算右边的值(c=a+b),然后再赋值给左边(a=b,b=c)
根据Fibonacci数列的特点。从第三个数开始。第三个值总为前两值的和,把a作为第一个值,把b作为第二个值。a+b的和即为第三个值。
这时依然是运行超时,需要先进行取余,再运算和赋值。不会改变Fibonacci数列,直接计算余数往往比先算出原数再取余简单。
n = int(input()) a,b = 1,1 for i in range(3,n+1): a,b = b%10007,(a+b)%10007 print(b)
坚毅——GRIT



