蓝桥杯每日练习2

一、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

知识点

运行结果
在这里插入图片描述

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值