藍橋杯-練習題目

1.題目1:輸入A、B,輸出A+B。

#input: 12 45
#output:57

c = input().split() #將輸入以空格爲分隔符返回一個字符串列表
a,b = map(int,c)
sum1 = a + b
print(sum1)
求和

2.題目2:求1+2+3+...+n的值。

#input:4
#output:10
print(sum(range(1,int(input()) + 1)))
求和

3.題目3:給定圓的半徑r,求圓的面積。

#input:4
#output:50.2654825

import math
print(round(math.pi*float(input())**2,7))
求圓的面積

4.題目4:

Fibonacci數列的遞推公式爲:Fn=Fn-1+Fn-2,其中F1=F2=1。編程

當n比較大時,Fn也很是大,如今咱們想知道,Fn除以10007的餘數是多少。api

#input:10
#output:55
import numpy as np
n = int(input())
a = np.zeros((1,n),dtype = "int")
a[0][0] = 1

for i in range(1,n):
    a[0][i] = a[0][i-1] + a[0][i-2]
print(a[0][n-1]%10007)

'''
def fei(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fei(n-1)%10007 + fei (n-2)%10007

n = int(input())#項數
print(fei(n))
'''
Fibonacci

5.題目5:

給定一個年份,判斷這一年是否是閏年。app

當如下狀況之一知足時,這一年是閏年:ide

1. 年份是4的倍數而不是100的倍數;函數

2. 年份是400的倍數。ui

其餘的年份都不是閏年。spa

#input:2013
#output:no

year = int(input())
if (year>=1990 and year<=2050) and (year%400 == 0 or (year%4 == 0 and year%100 !=0)):
    print("yes")
elif year<1990 or year>2050:
    print("輸入錯誤")
else:
    print("no")
閏年判斷

6.題目6:

對於長度爲5位的一個01串,每一位均可能是0或1,一共有32種可能。它們的前幾個是:code

00000orm

00001blog

00010

00011

00100

請按從小到大的順序輸出這32種01串。

for i in range(32):
    print("{:05b}".format(i,'b'))
5位2進制

7.題目7:

利用字母能夠組成一些美麗的圖形,下面給出了一個例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。

#input:5 7
#output:
'''
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
'''
m, n = map(int, input().split())
letters = ''
# 1.產生全部字母
for i in range(26):
    letters += chr(ord("A") + i)

# 2. 產生第一行代碼
x = letters[:n]
for i in range(1,m+1):
    try:
        print(x)
        x = letters[i] + x[0:n-1]
    except:
        pass

'''
try:
    n, m = map(int, input().split())
    letter = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    x = letter[:m]
    for i in range(1, n + 1):
        print(x)
        x = letter[i] + x[0:-1]
except:
    pass

#本文版權歸做者和博客園共有,來源網址:https://www.cnblogs.com/xiaolan-Lin 歡迎各位轉載,
#未經做者本人贊成轉載文章時,必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利!

'''


'''
import numpy as np
m,n = map(int,input().split())

#輸入原始矩陣
mx = np.ones((m,n),dtype="str")
print(mx)

#產生全部字母的列表
letters = []
for i in range(26):
    letters.append(chr(ord("A") + i))
# print(ord("A"))#65 某個字符串對應的ascii碼;chr ascii碼轉字符串
'''
字母圖形

8.題目8:

給出n個數,找出這n個數的最大值,最小值,和。

第一行爲整數n,表示數的個數。

第二行有n個數,爲給定的n個數,每一個數的絕對值都小於10000。

輸出三行,每行一個整數。第一行表示這些數中的最大值,第二行表示這些數中的最小值,第三行表示這些數的和。

#input:5
#         1 3 -2 4 5
#output:
#5
#-2
#11

# 給出n個數,找出這n個數的最大值,最小值,和。
n = int(input()) #幾個數
a = input().split() #注意不能直接將列表轉換類型
a = [int(i) for i in a]

#>>> input().split()
#4 5 6
#['4', '5', '6']
#>>>

print(max(a))
print(min(a))
print(sum(a))
數列特徵

 9.題目9:

給出一個包含n個整數的數列,問整數a在數列中的第一次出現是第幾個。

第一行包含一個整數n。

第二行包含n個非負整數,爲給定的數列,數列中的每一個數都不大於10000。

第三行包含一個整數a,爲待查找的數。

若是a在數列中出現了,輸出它第一次出現的位置(位置從1開始編號),不然輸出-1。

#input:
#6
#1 9 4 8 3 9
#9
#output:
#2

n = int(input()) # 幾個數
a = input().split() 
a = [int(i) for i in a] # 輸入的列表
b = int(input()) # 待查找的數
try:
    print(a.index(b) + 1) #待查找數的下標,加一表明位置
except:
    print(-1)
列表查找

10.題目10:

楊輝三角形又稱Pascal三角形,它的第i+1行是(a+b)i的展開式的係數。

它的一個重要性質是:三角形中的每一個數字等於它兩肩上的數字相加。

下面給出了楊輝三角形的前4行: 

1 

1 1  

1 2 1 

1 3 3 1

給出n,輸出它的前n行。

#input:4
#output:
#1
#1 1
#1 2 1
#1 3 3 1

#思想:列表相加 + 觀察
n = int(input())

def yanghui(p):
    p = [1] +  [p[i] + p[i+1] for i in range(len(p) - 1)] + [1]
    return p

#1.將每一行輸出一個列表
p = [1]
#print(p)
p_s = []
for i in range(n):
    p_s.append(p)
    p = yanghui(p)
    #p.append(0) #增長一個元素,由於下一行比上一行多一個,#不用了,上面p迭代呢
    #print(p)

#2.輸出
for i in p_s:
    #print(i)
    #將列表元素這樣輸出:1 3 3 1
    for j in i:
        print(j,end=' ')
    print("\t") #回車不換行
楊輝三角

11.題目11:

153是一個很是特殊的數,它等於它的每位數字的立方和,即153=1*1*1+5*5*5+3*3*3。編程求全部知足這種條件的三位十進制數。

#按從小到大的順序輸出知足條件的三位十進制數,每一個數佔一行。

#153是一個很是特殊的數,它等於它的每位數字的立方和,
#即153=1*1*1+5*5*5+3*3*3。編程求全部知足這種條件的三位十進制數。

for i in range(100,1000):
    gewei = i%10
    shiwei = (i//10)%10
    baiwei = (i//100)%10
    if i == gewei**3 + shiwei**3 + baiwei**3:
        print(i)
特殊數字

12.題目12:

1221是一個很是特殊的數,它從左邊讀和從右邊讀是同樣的,編程求全部這樣的四位十進制數。

#按從小到大的順序輸出知足條件的四位十進制數。
for i in range(10000):
    gewei = i%10
    shiwei = (i//10)%10
    baiwei = (i//100)%10
    qianwei = (i//1000)%10
    if qianwei == 0:
        continue   
    elif gewei == qianwei and shiwei == baiwei:
        print(i)
        
迴文數

13.題目13:

123321是一個很是特殊的數,它從左邊讀和從右邊讀是同樣的。
輸入一個正整數n, 編程求全部這樣的五位和六位十進制數,知足各位數字之和等於n 。

輸入一行,包含一個正整數n。

按從小到大的順序輸出知足條件的整數,每一個整數佔一行。

#input:52
#output:
#899998
#989989
#998899

num1 = int(input())

for i in range(10000,999999):
    gewei = i%10
    shiwei = (i//10)%10
    baiwei = (i//100)%10
    qianwei = (i//1000)%10
    wanwei = (i//10000)%10
    shiwanwei = (i//100000)%10

    sum1 = gewei + shiwei + baiwei + qianwei + wanwei + shiwanwei
    tiaojian1 = (shiwanwei==0 and wanwei==gewei and shiwei==qianwei and num1==sum1)#5位數
    tiaojian2 = (shiwanwei==gewei and shiwei==wanwei and baiwei==qianwei and num1==sum1)#6位數
    if tiaojian1 or tiaojian2:
        print(i,end=" ")
        print("\t")
特殊迴文數

14.題目14:

(1)給出一個非負整數,將它表示成十六進制的形式。

(2)從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換爲正的十進制數後輸出。

(3)給定n個十六進制正整數,輸出它們對應的八進制數。

  輸入的第一行爲一個正整數n (1<=n<=10)。
  接下來n行,每行一個由0~九、大寫字母A~F組成的字符串,表示要轉換的十六進制正整數,每一個十六進制數長度不超過100000。

  輸出n行,每行爲輸入對應的八進制正整數。

#給出一個非負整數,將它表示成十六進制的形式。
#10進制轉16進制:hex(n)  將10進制整數轉換成16進制,以字符串形式表示。
#10進制轉8進制oct(n)
#10進制轉二進制:bin(n)
#8進制轉16進制:hex(int(n,8))
#8進制轉換成10進制:int(n,8)
#8進制轉換成2進制:bin(int(n,8))
#2進制轉換成16進制:hex(int(n,2))
#2進制轉換成8進制:oct(int(n,2))
#2進制轉換成10進制:int(n,2)

#30 1E 10進制轉16進制
#n = int(input())
#s = hex(n)[2:]
#print(s.upper()) 

'''
str = "www.runoob.com"
print(str.upper())          # 把全部字符中的小寫字母轉換成大寫字母
print(str.lower())          # 把全部字符中的大寫字母轉換成小寫字母
print(str.capitalize())     # 把第一個字母轉化爲大寫字母,其他小寫
print(str.title())          # 把每一個單詞的第一個字母轉化爲大寫,其他小寫 
'''

#16進制轉10進制 FFFF 65535
#a = input() 
#a = '0x' + a
#print(int(a,16)) #注意:int最終輸出爲10進制

#16進制轉8進制
n = int(input()) #想要轉換的數的個數
l1 = [] #存儲要輸出的轉換後的8進制字符串
for i in range(n):
    a = input() #接收轉換的數
    a = '0x' + a
    b = int(a,16) #16進制對應的10進制數
    s = oct(b)[2:]
    l1.append(s)

#輸出:
for i in l1:
    print(i)
進制轉換

15.問題15(這個的知道內存的知識):

給定一個長度爲n的數列,將這個數列按從小到大的順序排列。

第一行爲一個整數n。
第二行包含n個整數,爲待排序的數,每一個整數的絕對值小於10000。

輸出一行,按從小到大的順序輸出排序後的數列。

5
8 3 6 4 9

3 4 6 8 9

n = int(input()) #列表的長度
l1 = input().split()#接收傳入的數字,轉爲列表
l1 = [int(i) for i in l1]
#print(l1)
#list.sort(cmp=None, key=None, reverse=False)
'''
l1ed = l1.sort()
print(id(l1ed),id(l1.sort()),id(l1))
print(l1ed)
#這塊的話:l1ed指向那個l1排序後的那個空間,
#而sort的話是在原內存上面進行的,那邊是空的

#list 的 sort 方法返回的是對已經存在的列表進行操做,而內建函數 sorted 方法返回的是一個新的 list,
#而不是在原來的基礎上進行的操做。
'''
l1.sort()

for i in l1:
    print(i,end = ' ')
數列排序
相關文章
相關標籤/搜索