文章目录
一、Fibonacci斐波那契数列
1、题目
资源限制:
时间限制:1.0s 内存限制:256.0MB。
问题描述:
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
输入
输入包含一个整数n。
输出
输出一行,包含一个整数,表示Fn除以10007的余数。
2、样例
输入
10
输出
55
输入
22
输出
7704
数据规模与约定:
1 <= n <= 1,000,000。
3、解析
在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
4、Python代码
代码
n=int(input())
F1,F2=1,1
for i in range(3,n+1):
F1,F2=F2%10007,(F1+F2)%10007 #先取余再递推防止超时
print(F2)
知识点
先用递归或者其他方法计算出斐波那契数列值,再对10007取余会超时!
运行结果
二、求圆的面积
1、题目
题目很简单,已知半径r,求一个圆的面积是多大。
输入
输入一个半径,浮点类型~
输出
输出它对应的面积大小,保留两位小数哦!
2、样例
输入
2
输出
12.57
3、解析
输入要用浮点类型
4、Python代码
代码1
r=float(input())
S=r*r*3.141592653
print("{:.2f}".format(S))
知识点
浮点类型的数据保留两位小数就用这个写法:print(“{:.2f}”.format(S))。
代码2
import math
r=float(input())
s=math.pi*r*r
print("{:.2f}".format(s))
知识点
math.pi是调用math库函数中的Π。
运行结果
三、N以内累加求和
1、题目
输入一个数字N,输出N以内(包含N)的数字之和 (N不超过1000)。
输入
数字N
输出
N以内(包含N)的数字之和。
2、样例
输入
10
输出
55
3、解析
利用求和公式进行求解。
4、Python代码
代码
n=int(input())
sum=n*(n+1)/2
print(int(sum))
知识点
运行结果
四、A+B问题
1、题目
输入A、B,输出A+B。
说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。
输入
输入的第一行包括两个整数,由空格分隔,分别表示A、B。
输出
输出一行,包括一个整数,表示A+B的值。
2、样例
输入
1 2
输出
3
3、解析
利用空格切割。
4、Python代码
代码1
a,b=input().split() #空格切割 转整型后赋值给a,b
a=int(a)
b=int(b)
print(a+b)
代码2
a,b=map(int,input().split()) #空格切割 转整型后赋值给a,b
print(a+b)
知识点
一次输入多个参数的语法:
a,b=input().split()
a,b=map(int,input().split())
运行结果
五、数列排序
1、题目
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200。
输入
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出
输出一行,按从小到大的顺序输出排序后的数列。
2、样例
输入
5
8 3 6 4 9
输出
3 4 6 8 9
3、解析
可以使用sort语句进行自动排序。
4、Python代码
代码1
n=int(input())
if n>=1 and n<=200:
num=list(map(int,input().split()))
num.sort() #默认reverse=False从小到大输出,reverse=True则相反
for i in range(len(num)):
print(num[i],end=" ") #end=" "的作用是输出不换行
知识点
A.sort()可以将A列表的数字进行自动排序。
end=" "的作用是输出不换行。
代码2
n=int(input())
if n>=1 and n<=200:
num=list(map(int,input().split()))
num.sort()
for i in num:
print(i,end=" ")
运行结果
六、十六进制转八进制
1、题目
给定n个十六进制正整数,输出它们对应的八进制数。
输入
输入的第一行为一个正整数n(1<=n<=10)。接下来n行,每行一个由0-9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
2、样例
输入
2
39
123ABC
输出
71
4435274
3、解析
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
#其他进制转换二进制#
bin(2) #十进制转换二进制#
‘0b10’
bin(0o10) #八进制转换二进制#
‘0b1000’
bin(0xf) #十六进制转换二进制#
‘0b1111’
#其他进制转换为八进制#
oct(0b101)
‘0o5’
oct(0xf)
‘0o17’
oct(0o123)
‘0o123’
#其他进制转换为十六进制#
hex(0o10)
‘0x8’
hex(3)
‘0x3’
hex(0b111)
‘0x7’
#其他进制转换为十进制#
int(0o10)
8
int(0xf)
15
int(0b10)
2
4、Python代码
代码
n=int(input())
for i in range(n):
s=input()
a=oct(int(s,16)) #这里的int(s,16)将十六进制转换为十进制,这里的oct代表把一个整数转化为八进制
print(a[2:]) #这里的[2:]代表结果从第三位开始输出
知识点
运行结果
七、十六进制转十进制
1、题目
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
输入
输入的第一行为一个正整数n(1<=n<=10)。接下来n行,每行一个由0-9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出
对应得十进制
2、样例
输入
FFFF
输出
65535
3、解析
#其他进制转换为十进制#
int(0o10)
8
int(0xf)
15
int(0b10)
2
4、Python代码
代码
s=input()
a=int(s,16) #这里的int(s,16)将十六进制转换为十进制,这里的oct代表把一个整数转化为八进制
print(a) #这里的[2:]代表结果从第三位开始输出
知识点
运行结果
八、十进制转十六进制
1、题目
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。给出一个非负整数,将它表示成十六进制的形式。
输入
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出
输出这个整数的16进制表示
2、样例
输入
30
输出
1E
3、解析
这道题一定要注意输入格式和输出格式。要求输出的为大写字母,因此要用upper()将小写字母转换为大写字母。
#其他进制转换为十六进制#
hex(0o10)
‘0x8’
hex(3)
‘0x3’
hex(0b111)
‘0x7’
4、Python代码
代码
a=int(input())
if a>=0 and a<=2147483647:
b=hex(a).upper() #upper()将字符串中的小写字母转化为大写字母
print(b[2:])
运行结果
九、杨辉三角形
1、题目
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入
输入包含一个数n。
输出
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
2、样例
输入
4
输出
1
1 1
1 2 1
1 3 3 1
3、解析
杨辉三角形中,每一行第一个元素都是1,第二个元素则为前一行的第一个元素+第二个元素;第三个元素则为前一行的第二个元素+第三个元素。依次类推,可以得到杨辉三角形。
4、Python代码
代码
n=int(input())
nums=[[0]*n for i in range(n)] #初始化一个n*n的零阵
for i in range(n):
for j in range(n):
if j==0:
nums[i][j]=1
else:
nums[i][j]=nums[i-1][j-1]+nums[i-1][j]
if nums[i][j]!=0:
print(nums[i][j],end=" ")
print()
知识点
end=" " 可以保证输出不换行。
运行结果
十、查找整数
1、题目
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
2、样例
输入
6
1 9 4 8 3 9
9
输出
2
3、解析
杨辉三角形中,每一行第一个元素都是1,第二个元素则为前一行的第一个元素+第二个元素;第三个元素则为前一行的第二个元素+第三个元素。依次类推,可以得到杨辉三角形。
4、Python代码
代码
n = int(input())
nums = list(map(int,input().split()))
a = int(input())
for i in range(len(nums)):
if a == nums[i]:
print(i + 1)
break
知识点
运行结果