ccf 2019.12.15報数回収局アドレス(python)

11297 ワード

今はまだ問題が出ていませんが、成績が出て3番目の問題が出て2時間もかかりました.例はすべて正しいです.結果は0分5番目の問題が20分で、最後に220分で、私の気持ちは爆発しました.
1,2題ともaになった
に報いる
7と7の倍数に出会って入力をスキップします:新聞の個数の出力:甲乙丙丁の4人は何回スキップしたことがあります
簡単で、1つのcountは記録をして、1つのwhileは循環して遍歴します
n=int(input())
count=[0,0,0,0]
number=1
while n>0:
    if (number>=7 and number%7==0) or ('7' in str(number)) :
        count[(number%4)-1]+=1
    else:
        n-=1
    number+=1
for i in count:
    print(i)

ごみ箱アドレス
ポイントは、回収所の基準を満たしているかどうか、つまり上下左右にゴミがあるかどうかを判断し、基準を満たしている位置から4つの対角の点数を判断することです
便宜上、2つの関数を個別に分解します.
n=int(input())
position=[]
res=[0,0,0,0,0]
def adj(x,y,p):
    l=[x-1,y]
    r=[x+1,y]
    t=[x,y-1]
    b=[x,y+1]
    if l in p and r in p and t in p and b in p:
        return True
    else:
        return False
def count(x,y,p,res):
    lt=[x-1,y-1]
    rt=[x+1,y-1]
    lb=[x-1,y+1]
    rb=[x+1,y+1]
    pos=[lt,rt,lb,rb]
    count=0
    for i in range(len(pos)):
        if pos[i] in p:
            count+=1
    res[count]+=1
for i in range(n):
    position.append(list(map(int,input().split())))

for p in position:
    if  p[0]*p[1]==0:   #        
        continue
    if adj(p[0],p[1],position):  #        
        count(p[0],p[1],position,res)   #    
for i in res:
    print(i)

問題が出てから更新する