はい。
http://abc003.contest.atcoder.jp/
A問題
最初は問題文を全然読んでなくて、サイコロは6面までとの思い込みで苦戦。。。
自分が書いたのはサンプルケースについてた解説のような式をforで回すパターンを。ただコレforで回す以外に 10000*(1+N)/2 という方法が合ったようです。(1+N)/2で1からNまでの総和の平均出して10000円掛ければ同じ値が出たようです。
A問題
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
import sys
import io
import re
import math
#start = time.time()
start = time.clock()
a = 0
y=10000.0
n = float(raw_input())
for i in range(1,(int(n)+1)):
a+=(y*i*(1/n))
print a
↑が時間中に提出したもの、↓が寝る前に書きなおしてみたもの
A問題書き直し
n=input()
print sum([10000*(x+1)*(1.0/(n)) for x in range(n)])
B問題
文字列をリスト化して受け取って両方共を先頭から見て、
同じ文字なら次の文字を見に行く
いずれかが@で合ったならもう一方はatcoder置き換えられるかチェック
置き換えられるなら次の文字を、出来なければ'You will lose'
先頭から最後まで見終われば'You can win'
時間内には提出出来ず。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
import sys
import io
import re
import math
#start = time.time()
start = time.clock()
i = 0
chk=['a','t','c','o','d','e','r']
S = list(raw_input())
T = list(raw_input())
while i<= len(S):
if i == len(S):
print 'You can win'
i+=20
elif S[i]==T[i]:
i+=1
elif S[i]=='@' and T[i] in chk:
i+=1
pass
elif T[i]=='@' and S[i] in chk:
i+=1
pass
else:
print 'You will lose'
i+=20
配列の扱い方で色々と絶望的に差があるので他の方の回答を沢山読みます。。。
C問題
問題文からサンプルまで見てすぐ方針が決まった私的には今回の最易問だったような。先にA,B見てたので提出は遅いですけど。。
昇順でリストをソートして後ろから見ることが出来る本数を〜を達成できる最大レートになると信じて疑っていなかった。
C問題
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
import sys
import io
import re
import math
#start = time.time()
start = time.clock()
a = 0
sw=0
(N, K) = map(float, raw_input().split())
R = map(float, raw_input().split())
x=N-K
R.sort()
for i in range(int(x), int(N)):
# print a
a=((R[i])+a)/2
print a
はい。