藍橋杯基礎練習1-12(python)

BASIC-1 閏年判斷

問題描述
給定一個年份,判斷這一年是不是閏年。

當以下情況之一滿足時,這一年是閏年:

  1. 年份是4的倍數而不是100的倍數;
  2. 年份是400的倍數。

其他的年份都不是閏年。

輸入格式
輸入包含一個整數y,表示當前的年份。
輸出格式
輸出一行,如果給定的年份是閏年,則輸出yes,否則輸出no。

def isr(y):
    if y%4 ==0 and y%100 != 0 or y%400 == 0:
        return 1
    return 0

y=int(input())
print('yes' if isr(y) else 'no')

BASIC-2 01字串

問題描述
對於長度爲5位的一個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是:
00000
00001
00010
00011
00100
請按從小到大的順序輸出這32種01串。

輸入格式
本試題沒有輸入。
輸出格式
輸出32行,按從小到大的順序每行一個長度爲5的01串。

for i in range(32):
    print('{:0>5d}'.format(int('{:b}'.format(i))))

BASIC-3 字母圖形

問題描述

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

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

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

輸入格式

輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。

輸出格式

輸出n行,每個m個字符,爲你的圖形。

n,m=map(int,input().split())
for i in range(n):
    for j in range(m):
        if i<=j :
            print(chr(ord('A')+j-i),end='')
        else :
            print(chr(ord('A')+i-j),end='')
    print()

BASIC-4 數列特徵

問題描述

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

輸入格式

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

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

輸出格式

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

n = int(input())
arr = input().split()
print(max(int(arr[i]) for i in range(n)))
print(min(int(arr[i]) for i in range(n)))
print(sum(int(arr[i]) for i in range(n)))

BASIC-5 查找整數

問題描述

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

輸入格式

第一行包含一個整數n。

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

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

輸出格式

如果a在數列中出現了,輸出它第一次出現的位置(位置從1開始編號),否則輸出-1。

n = int(input())
l = input().split()
a = input()
i=0
while i<n:
    if a == l[i]:
        print(i+1)
        break
    i = i+1

if i == n:
    print(-1)

BASIC-6 楊輝三角形

問題描述

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

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

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

1

1 1

1 2 1

1 3 3 1

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

輸入格式

輸入包含一個數n。

輸出格式

輸出楊輝三角形的前n行。每一行從這一行的第一個數開始依次輸出,中間使用一個空格分隔。請不要在前面輸出多餘的空格。

n = int(input())
l=[[0 for i in range(n)] for i in range(n)]

l[0][0] = 1

for i in range(n):
    l[i][0]=1

for i in range(n):
    for j in range(i+1):
        if(j>=1):
            l[i][j]=l[i-1][j]+l[i-1][j-1]
        print(l[i][j],end=' ')
    print()

BASIC-7 特殊的數字

問題描述

153是一個非常特殊的數,它等於它的每位數字的立方和,即153=111+555+333。編程求所有滿足這種條件的三位十進制數。

輸出格式

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

for i in range(10):
    for j in range(10):
        for k in range(10):
            a=pow(i,3) +pow(k,3)+pow(j,3)
            if a>=100 and a<=999 and a==i*100+j*10+k*1:
                print(a)

BASIC-8 迴文數

問題描述

1221是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的,編程求所有這樣的四位十進制數。

輸出格式

按從小到大的順序輸出滿足條件的四位十進制數。

for i in range(9):
    for j in range(10):
        print("%d%d%d%d" % (i+1,j,j,i+1))

BASIC-9 特殊迴文數

問題描述

123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
  輸入一個正整數n, 編程求所有這樣的五位和六位十進制數,滿足各位數字之和等於n 。

輸入格式

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

輸出格式

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

n = int(input())

#先輸出5位
for i in range(9):
    for j in range(10):
        k=n-(i+1)*2-j*2
        if k>=0 and k<=9:
            print('%d%d%d%d%d' % (i+1,j,k,j,i+1))
#再輸出六位
for i in range(9):
    for j in range(10):
        for l in range(10):
            if(n==(i+1+j+l)*2):
                print('%d%d%d%d%d%d' % (i+1,j,l,l,j,i+1))

BASIC-10 十進制轉十六進制

問題描述

十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有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進製表示

a=int(input())
print('{:X}'.format(a))
#方法2:
n = int(input())
print(format(n, 'X')) # X 輸出字母爲大寫

BASIC-11 十六進制轉十進制

問題描述

從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換爲正的十進制數後輸出。
  注:十六進制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。

樣例輸入

FFFF

樣例輸出

65535

a=input()
print(int(a,16))

BASIC-12 十六進制轉八進制

問題描述
  給定n個十六進制正整數,輸出它們對應的八進制數。

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

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

【注意
  輸入的十六進制數不會有前導0,比如012A。
  輸出的八進制數也不能有前導0。

n=int(input())
for i in range(n):
    a = input()
    print(format(int(a, 16), 'o'))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章