BASIC-1 閏年判斷
問題描述
給定一個年份,判斷這一年是不是閏年。
當以下情況之一滿足時,這一年是閏年:
- 年份是4的倍數而不是100的倍數;
- 年份是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'))