キャディプログラミングコンテスト2021
結果
今回は全然ダメだったなぁという感想だったのだけど、
何でか現状維持は出来たらしい。
考え方わからんけど強引に答えだけ出したって感じだった。
問題と解答と勉強
提出したコード
A, B = map(int, input().split()) print((A - B) / A * 100)
提出したコード
N = int(input()) ans = 1000000001 for _ in range(N): A, P, X = map(int, input().split()) if X - A > 0 and P < ans: ans = P if ans < 1000000001: print(ans) else: print(-1)
何かイマイチ感が否めない。
と思ってたんだけど。
正解
n=int(input()) m=10**9+1 for i in range(n): a,p,x=map(int,input().split()) if x-a>0 and p<m:m=p print(-1 if m>10**9 else m)
プロが全く同じの出してたから良いっぽい。
だいぶ同じだからちょっと嬉しい。
提出したコード
import math N = int(input()) ok = [] for i in range(2,100001): for j in range(2,35): if i**j <= N: ok.append(i**j) print(N - len(set(ok)))
これヤベェぞ。
提出した全ての解答の中で一番ダサい自信がある。
何か工夫して数える回数減らそうとすると不正解になってさ。
わかんないから全部数えたよ。
だって10000000000まで数えても時間、間に合うんだもの。
若干出題ミスっぽいよね、間に合っちゃダメだよね多分。
と思ったんだけどさ。
正解
n=int(input()) i=2 s=set() while i**2<=n: m=2 while i**m<=n: s.add(i**m) m+=1 i+=1 print(n-len(s))
これで正解みたい、同じじゃん。
良いのか・・・これで。
何か今回どうも腑に落ちない。
考え途中
K = int(input()) S = list(input()) T = list(input()) card = [K]*9 TAKA = [] AO = [] for i in range(1, 10): card[i-1] -= S.count(str(i)) card[i-1] -= T.count(str(i)) S[4] = str(i) T[4] = str(i) taka = 0 ao = 0 for j in range(1, 10): taka += i * 10**S.count(str(i)) ao += i * 10**T.count(str(i)) TAKA.append(taka) AO.append(ao) total = sum(card)*(sum(card)-1) count = 0 for n, i in enumerate(TAKA): for m, j in enumerate(AO): if i > j: count += card[n]*card[m] print(count/total)
まだそれっぽく、なって来た、か??って段階。
例題1だけは正解になる。
で、タイムアップ!
正解
k=int(input()) s=list(map(int,list(input()[:4]))) t=list(map(int,list(input()[:4]))) ans=0 def point(x): p=0 for i in range(1,10): p+=i*10**(x.count(i)) return p for i in range(1,10): for j in range(1,10): if point([*s,i])>point([*t,j]): imai=k-s.count(i)-t.count(i) jmai=k-s.count(j)-t.count(j) if imai-int(i==j)>0 and jmai>0: ans+=(imai/(9*k-8))*((jmai-int(i==j))/(9*k-9)) print(ans)
あぁ、これも近づいてたんだなぁ。
間に合えば到達したかもしれん。
今回はそういうシリーズだったのかな。
毎回思うけど5,6問目ってビギナーに解かせる気ないよね。