4.25

1.冪運算

給定兩個數R和n,輸出R的n次方,其中0.0<R<99.999, 0<n<=25

思路:1.轉化爲整數計算;2.記錄小數位;3.最後去掉小數位中的0

if __name__=='__main__':
    while 1:
        try:
            a,b=input().split()
            index=a.find('.')
            aint=int(a[:index]+a[index+1:])
            b=int(b)
            ###計算最後小數點的位置
            zeros=(len(a)-index-1)*b
            orint=str(aint**b)
            j=len(orint)
            #補零
            if j<=zeros: orint='0'*(zeros+1-j)+orint
            c=len(orint)-zeros
            print(orint[:c]+'.'+str(int(orint[c:][::-1]))[::-1])
            #print(orint[:c]+'.'+orint[c:])   #沒有去掉小數位中的0
        except:
            break

2.字符串組合

輸入一個字符串,輸出該字符串中相鄰字符的所有組合。
舉個例子,如果輸入abc,它的組合有a、b、c、ab、bc、abc。(注意:輸出的組合需要去重)(40分)一行,每個組合以空格分隔,相同長度的組合需要以字典序排序,且去重。

s = input()
s = list(s)
for i in range(1,len(s)+1):
    words = []
    for j in range(0, len(s)):
        if(j+i<=len(s)):
            t = ''.join(s[j:j+i])
            if t not in words:
                words.append(t)
    words.sort()
    print(' '.join(words),end=' ')

3.Unix路徑簡化

簡化 Unix 風格的路徑,需要考慮的包括 "/../", "//", "/./" 等情況

import os
type=input()
print(os.path.abspath(type))

4.數三角形

給出平面上的n個點,現在需要你求出,在這n個點裏選3個點能構成一個三角形的方案有幾種。
思路:組成三角形的條件爲三點不共線

n=int(input())
res=[]
for i in range(n):
    res.append(list(map(int,input().split())))
num=0
for i in range(len(res)):
    for j in range(i+1,len(res)):
        for k in range(j+1,len(res)):
            a=(res[j][1]-res[i][1])*(res[k][0]-res[j][0])
            b=(res[j][0]-res[i][0])*(res[k][1]-res[j][1])
            if a!=b:
                num+=1
print(num)

5.括號匹配方案

合法的括號匹配序列被定義爲:
1. 空串""是合法的括號序列
2. 如果"X"和"Y"是合法的序列,那麼"XY"也是一個合法的括號序列
3. 如果"X"是一個合法的序列,那麼"(X)"也是一個合法的括號序列
4. 每個合法的括號序列都可以由上面的規則生成
例如"", "()", "()()()", "(()())", "(((())))"都是合法的。 東東現在有一個合法的括號序列s,一次移除操作分爲兩步:
1. 移除序列s中第一個左括號
2. 移除序列s中任意一個右括號.保證操作之後s還是一個合法的括號序列
東東現在想知道使用上述的移除操作有多少種方案可以把序列s變爲空

s=input()
zk=0
res=1
for i in s:
    if i=='(':
        zk+=1
    if i==')':
        res=res*zk
        zk-=1
print(res)

6.數字遊戲

牛牛舉辦了一場數字遊戲,有n個玩家參加這個遊戲,遊戲開始每個玩家選定一個數,然後將這個數寫在紙上(十進制數,無前綴零),然後接下來對於每一個數字將其數位按照非遞減順序排列,得到新的數,新數的前綴零將被忽略。得到最大數字的玩家贏得這個遊戲。

n=int(input())
res=0
num=list(input().split())
for i in num:
    cur=int(''.join(sorted(i)))
    if cur>res:
        res=cur
print(res)


'''a='3956'
k=sorted(a)
k
['3', '5', '6', '9']
'''

7.紅和綠

牛牛有一些排成一行的正方形。每個正方形已經被染成紅色或者綠色。牛牛現在可以選擇任意一個正方形然後用這兩種顏色的任意一種進行染色,這個正方形的顏色將會被覆蓋。牛牛的目標是在完成染色之後,每個紅色R都比每個綠色G距離最左側近。牛牛想知道他最少需要塗染幾個正方形。

s=input().strip()
li=[i for i in s]
m=li[0].count('G')+li[1:].count('R')
for j in range(1,len(li)):
    m=min(m,li[:j+1].count('G')+li[j+1:].count('R'))
m=min(m,li.count('R'))
print(m)
'''
此處沒有規定紅和綠的個數,我們可以從第一個位置開始設立分割線,看看哪次分割可以是最優的'''

 

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