番号は新たに1から重複問題とかは省いてます。
#1 果物の表示 range(9,-1,-1) 9〜0まで-1ずつ n = int(input()) print("#"*n) for i in range(n): print(" "*(n-i-1)+"#"*(2*i+1)) for i in range(n-1,-1,-1): print(" "*(n-i-1)+"#"*(2*i+1)) #2 数値の整形 n[-1]で最後の要素 n=input() n=n.replace(" ","") o="" for i in range(11): o=n[-i-1]+o if i%3==2:o=" "+o print("0"+o) #3 回文チェック [::-1]で文字列をヒックリ返す n = int(input()) for i in range(n): w = input() if w==w[::-1]: print("true") else: print("false") #4 x箱数 n分で1箱 t時間 a運べない数 x = int(input()) n = int(input()) t = int(input()) a=x-int(t*60/n) if 0>a:a=0 print(a) #5 HELLO→EHLLO 1234 →2143 s = input() o="" for i in range(int(len(s)/2)): o+=s[2*i+1]+s[2*i] if len(s)%2==1: o+=s[-1] print(o) #6 xがpの数列ですべて割り切れれば"T" n = int(input()) m = int(input()) p=[] for i in input().split(): p.append(int(i)) o="" for i in input().split(): x = int(i) sw=0 for j in p: sw+=x%j if sw==0: o+="T" else: o+="F" print(o) #7 120→40 80→40 10000→2000 n = int(input()) print(int(n/len(str(n)))) #8 シンプルバトルシステム h,v HP d,a 相手に与えるダメージ どちらが何ターンで勝つ #他の方の答えです h,d=[int(i)for i in input().split()] v,a=[int(i)for i in input().split()] t=0 while h>0 and v>0: h-=a v-=d t+=1 w=1 if h>0 else 2 print(str(w)+" "+str(t)) #9 数字が並んでいる 0は最大いくつ並ぶ n = input() for i in range(1,9): n=n.replace(str(i)," ") a=n.split() if n.count("0")==0: print("0") else: mx=0 for i in a: if len(i)>mx: mx=len(i) print(mx) #10 ぐるっと和を描いて物騒な問題 剣を回して一人倒して次に渡す n=int(input()) live=[i+1 for i in range(n)] dead=[0 for i in range(n)] p=0 k=-1 while n-1>sum(dead): if dead[p]==0: if k>0:dead[p]=1 k*=-1 p+=1 if p>n-1:p=0 for i in range(n): if dead[i]==0: print(live[i]) #11 支払いを最小の枚数で ユーロかな u=[500,200,20,10,2,1,0.5] n = float(input()) if int(2*n)!=2*n: print("IMPOSSIBLE") else: o="" for i in u: if int(n/i)>0: o+=str(int(n/i))+" x "+str(i)+", " n=n-int(n/i)*i print(o[:-2]+"€") #12 反発0.5の高さ、6回バウンド後の高さh、最初の高さ h = int(input()) print(h*2**6) #13 0で終了 821 8>=2+1 2>=1 941 9>=4+1 4>=1 マジックナンバーのみ表示 p=0 while 1: x = int(input()) if x==0:break if 10>x:continue n=len(str(x)) s=str(x) sw=1 for i in range(n-1): #print(sum(int(j)for j in s[i+1:])) if sum(int(j)for j in s[i+1:])>=int(s[i]):sw=0 if sw==1: print(s) p+=1 if p==0:print("NONE") #14 アスキーコードから文字列に _=input() print(''.join(chr(int(i))for i in input().split())) #15 妻 X人、各妻にX人の子、あわせて x=int(input()) print(x+x*x+x*x*x) #16 + box x=int(input()) for i in range(x): print("+"*x) #17 5→2500 11→12100 1→100 n=int(input()) print(n**2*100) #18 3→192 5→320 7→448 h = int(input()) print(h*64) #19 未解決私見鬼問 三角形の中 x, y = [int(i) for i in input().split()] n = int(input()) for i in range(n): x1, y1, x2, y2, x3, y3 = [int(j) for j in input().split()] al=((x1-x2)**2+(y1-y2)**2)+((x1-x3)**2+(y1-y3)**2)+((x3-x2)**2+(y3-y2)**2) cl=((x1-x)**2+(y1-y)**2)+((x2-x)**2+(y2-y)**2)+((x3-x)**2+(y3-y)**2) if al>cl: print("inside") else: print("outside") #20 10人の生徒、3つの得点。成績悪い順に席を決定 t=[] for i in range(10): name,s1,s2,s3 = input().split() t.append((name,float(s1)+float(s2)+float(s3))) for i in range(10): b=100 bp=-1 bn="" for j in range(len(t)): n,s=t[j] if b>s: b=s bp=j bn=n del t[bp] print(bn) #21 変わった数字で16進 a=["HO","HA","HE","HI","BO","BA","BE","BI","KO","KA","KE","KI","DO","DA","DE","DI"] n = int(input()) if n==0: print(a[0]) else: o="" while n>0: o=a[n%16]+o n=int((n-n%16)/16) print(o) #22 大文字アルファベット列変換 (a x alphabetNo + b)mod 29→新alphabetNo 特典" .,"付 s="ABCDEFGHIJKLMNOPQRSTUVWXYZ .," p=input a,b=[int(i)for i in p().split()] l=int(p()) t=p() o="" for i in t: if i==" ":i=chr(91) if i==".":i=chr(92) if i==",":i=chr(93) o+=s[((ord(i)-65)*a+b)%29] print(o) #23 16進数のアスキーコードから文字列へ o="" value_count = int(input()) for value in input().split(): o+=chr(int(value,16)) print(o) #24 a*x+bをn回 a, b = [int(i) for i in input().split()] n = int(input()) for i in range(n): x = int(input()) print(a*x+b) #25 6桁の数字 1,2,3桁の数字の合計=4,5,6桁の数字の合計 n = int(input()) for i in range(n): t = input() if (int(t[0])+int(t[1])+int(t[2])==int(t[3])+int(t[4])+int(t[5])): print("true") else: print("false") #26 ユニークな数字 "1 2 3 5"→"2" "5 8 99 107"→"8" n = int(input()) n0=0 n1=0 a0="" a1="" for i in input().split(): number = int(i) if number%2==0: n0+=1 a0=str(number) else: n1+=1 a1=str(number) if n0==1: print(a0) else: print(a1) #27 繰り返し表示 n = int(input()) w = input() for i in range(n): print(w) #28 未完分子量演算 n = int(input()) dic={} for i in range(n): atom, molar_mass = input().split() molar_mass = float(molar_mass) dic[atom] = molar_mass molecule = input() numSw=0 num=0 b="" a=0 for i in molecule: if i.isnumeric(): if numSw==0: num=int(i) numSw=1 else: num=num*10+int(i) else: if numSw==1: a=a+dic[n]*num if b=="": a=a+dic[b] b=i print(a) #29 パイ初期m個あり 1時間毎にr個ロスト t時間後にn個食べれたら"HAPPY" n,m,r,t=[int(i)for i in input().split()] s="NOT " if (m-r*t>=n):s="" print(s+"HAPPY") #30 足し算を小さい順に並び替え s=[int(i)for i in input().split("+")] s.sort() print("+".join([str(i)for i in s])) #別解 print('+'.join([str(i)for i in sorted(input().split('+'))])) #31 アルファベットの文字列を並び替えて最大の長さの回文を作る。辞書順の先頭の一文(回文は意味不問) l = int(input()) s = input() a=[] for i in range(26): a.append(s.count(chr(ord("a")+i) )) o="" s="" for i in range(26): o+=chr(ord("a")+i)*int(a[i]/2) if a[i]%2==1 and s=="": s=chr(ord("a")+i) print(o+s+o[::-1]) #32 謎の問題、正解者のソース(難題が2問続くと心折れます) n = int(input()) r = [] for i in range(n): a, b = [int(j) for j in input().split()] found = False for i in range(1, a): if b * i % a == 1: r.append(str(i)) found = True break if not found: r.append("NaN") print(" ".join(r)) #33 "LLLDDDRRRUUU"からXで絵を書く(実際はXのある所だけ表示という鬼仕様) def put(x,y): mp[y]=mp[y][:x]+"X"+mp[y][x+1:] mp=[] for i in range(20): mp.append(" "*20) inst=input() sx=10 sy=10 for s in inst: if s=="U":sy-=1 if s=="D":sy+=1 if s=="L":sx-=1 if s=="R":sx+=1 put(sx,sy) for i in mp: print(i) #34 未解決 文字列の中で一番長い同じ文字列を答える "ex. aabb in ccddaabb inc"→"aabb in" ''' def sw(t1,t2,p1,p2): o="" for i in range(1024): if t1[p1+i]!=t2[p2+i]:return o o+=t1[p1+i] t = input().lower() mx="" t1=t+"@" t2=t+"@" for i in range(len(t)): for j in range(len(t)): if t1[i]==t2[j]: sw(t1,t2,i,j): ''' t = input().lower() if mx=="": print("None") else: print(mx) #35 h高さ w幅 o隙間 ビルのような風景を書く n = int(input()) b=[] mx=0 for i in range(n): h, w, o = [int(j) for j in input().split()] b.append((h,w,o)) if h>mx: mx=h p=[] for i in range(mx): l="" for j in b: h,w,o=j s="#" if i>=h:s="." l+=s*w+"."*o p.append(l) for i in p[::-1]: print(i) #print("..##") #print("#.##") #print("#.##") #36 aのb乗した答えの各数字を足すかな? print(sum(int(i)for i in str(int(input())**int(input())))) #37 未解決 約数の数が2なら表示が変わる? def semi(n): c=0 bn=n for j in range(4): for i in range(2,n): if n%i==0: c+=1 n=int(n/i) break if c==2:return bn return 0 n=int(input()) for i in range(n): r = semi(int(input())) if r>0:print(r) #38 未解決 文の中の各単語をアナグラムすると何パターンあるか import itertools s=input().replace("'","").split() a=1 for i in s: q=(j for j in i) a*=len(list(itertools.permutations(q))) print(a) #39 nノード数 lリンク数 n1,n2ノード間リンクあり(距離はすべて1) s開始位置 e終了位置 s-e間の最短は n = int(input()) l = int(input()) a=[] for i in range(l): n1, n2 = [int(j) for j in input().split()] a.append((n1,n2)) a.append((n2,n1)) s = int(input()) e = int(input()) nodeL=[10000 for i in range(n)] nodeL[s]=0 sp=[s] while len(sp)>0: for i in a: n1,n2=i if n1==sp[0]: if nodeL[n2]>nodeL[n1]+1: nodeL[n2]=nodeL[n1]+1 sp.append(n2) del sp[0] print(nodeL[e]) #40 数字 x 最初の約数 def f(n): for i in range(2,n+1): if n%i==0:return i return n c = int(input()) print(c*f(c)) #41 3点 角の名前 x,yが与えられ直角三角形なら90度の角の名前、なければ"_" x=[] y=[] p=[] for i in range(3): p1, x1, y1 = input().split() p.append(p1) x.append(int(x1)) y.append(int(y1)) x=x+x y=y+y l=[] for i in range(3): l.append((x[i]-x[i+1])**2+(y[i]-y[i+1])**2) if l[0]==l[1]+l[2]: print(p[2]) elif l[1]==l[0]+l[2]: print(p[0]) elif l[2]==l[0]+l[1]: print(p[1]) else: print("_") #42 その数字が6で割り切れて素数でなければ表示かな? def sosu(n): if 2>n:return False for i in range(2,n): if n%i==0: return False return True n=int(input()) if n//6==0 or sosu(n): print("NONE") else: print(n//6) #43 クロスワードを作る文字列は横、縦ただし同じ長さなら入れ替える w1,w2 = input().upper().split() if len(w1)==len(w2): w1,w2=w2,w1 #print(w1,w2) mw="?" for i in w1: m=w2.find(i) if m>-1: mw=w2[m] break if mw=="?": print("NO COMMON CHARACTER") else: m1=w1.find(mw) m2=w2.find(mw) for i in range(len(w2)): if i==m2: print(w1) else: print(" "*m1+w2[i]) #44 未完成 "10 times write hello. yahoo"とか"write hello. 10 times"なら10回"hello"表示 writeに対して"."がないとエラー表示 s=input() c=s.split() p=1 for i in range(1,len(c)): if c[i]=="times": if c[i-1].innumeric(): p=int(c[i-1]) sp=s.find("write ") ep=s.find(".") if ep>sp and sp>0: for i in range(p): print(s[sp+6,ep]) else: print("Syntax Error") #45 数列すべての最小公倍数を求める import math def lcm(x, y): return (x * y) // math.gcd(x, y) n = int(input()) f=1 for i in input().split(): m = int(i) f=lcm(f,m) print(f) #46 数値をバイナリにして左右ひっくり返して数値に戻す bi=bin(int(input())) n=bi[2:][::-1] b=1 a=0 for i in n: if i=="0": a+=b b*=2 print(a) #47 素数の強さ弱さ判定 (元の素数の2倍と素数の前後の素数の和の比較) def s(n): if 2>n:return False for i in range(2,n): if n%i==0:return True return False n=int(input()) u=n+1 while s(u):u+=1 l=n-1 while s(l) and l>0:l-=1 if u+l>2*n: print("WEAK") elif 2*n>u+l: print("STRONG") else: print("BALANCED") #48 "123456X"の各数字を足したものを10で割ったあまり? s=input()[::-1][1:] a=sum(map(int,s)) print(a%10) #49 sz*szの中にすべて1で作られている正方形の最大の幅 def get(x,y,sz): if x>=sz or y>=sz:return "0" return mp[y][x] def box(sx,sy,sz,sc): for x in range(sx,sx+sc): for y in range(sy,sy+sc): if get(x,y,sz)=="0":return False return True sz=int(input()) mp=[] for i in range(sz): mp.append(input().replace(" ","")) mx=0 for sx in range(sz): for sy in range(sz): for sc in range(sz+1): if box(sx,sy,sz,sc): if sc>mx:mx=sc print(mx) #50 2つの角度からその狭いほうの角度を求める(360度単位) a, b = [int(i) for i in input().split()] a=a%360 b=b%360 c=abs(a-b) if c>180:c=360-c print(c) #51 問題不明、解答も第3者 n=int(input()) p=int(input()) c=0 while n>=p: c+=n//p n//=p print(c) #52 1からnまでかけあし l=input() a=1 for i in l: a*=(int(i)+1) print(a) #53 次の素数 def sosu(n): if 2>n:return False for i in range(2,n): if n%i==0:return False return True x=int(input())+1 while sosu(x)==False: x+=1 print(x) #54 100までの数あて "+ 50","- 52"→"51" "= 51"→"51" #ミスあり自分 h=[1 for i in range(101)] h[0]=0 for i in range(int(input())): n,a = input().split() n=int(n) if a=="=": for i in range(101): if i!=n:h[i]=0 if a=="+": for i in range(n+1): h[i]=0 if a=="-": for i in range(n,101): h[i]=0 #print(h) if sum(h)==1: for i in range(101): if h[i]==1: print(i) else: print("Impossible") #他の方の答え こんなif else文できるのか... a=-1 b=101 v=0 boo=0 n = int(input()) for i in range(n): x,s = input().split() if s=='+':a=max(a,int(x)) if s=='-':b=min(b,int(x)) if s=='=':v=int(x);boo=1 if boo: if b>v>a:print(v) else:print("Impossible") else: if b-1>a:print(a+1) else:print("Impossible") #55 文字列Tを鍵Cを使って暗号化 t=input() c=input() n=0 o="" for i in range(len(t)): if t[i]!=" ": b=ord(t[i])-ord(c[n]) b=b%26 o+=chr(97+b) n+=1 if n>=len(c):n=0 else: o+=" " print(o) #56 再生紙から新聞何部つくれるか #25% 正解 pw,ph = [int(i) for i in input().split("x")] p = int(input()) n = int(input()) news=pw*ph+p #print(news) total=0 for i in range(n): gift = input() x,y,z=[int(i) for i in gift.split("x")] total+=(x*y+x*z+y*z)*2 print(int(total/news)) #他の方の答え スペース使い方から変数名の付け方まで参考にしたい。 import sys import math # Auto-generated code below aims at helping you parse # the standard input according to the problem statement. a,b = map(int, input().split("x")) size = a*b pages = int(input()) needed = (pages * size) // 4 n = int(input()) have = 0 for i in range(n): a,b,c = map(int,input().split("x")) have += 2*a*b + 2*a*c + 2*b*c print(have // needed)