Codeforces Beta Round #84 (Div.2 Div.1)
はい。
http://codeforces.com/contest/110
A. Nearly Lucky Number
implementation
ざっくりと大意
・nが4と7が4個か7個ふくんでいるか??
方針のようなもの
・カウントする
n=list(raw_input()) chk=(n.count('4')+n.count('7')) print 'YES' if chk==4 or chk==7 else 'NO'
提出初回は4,7のみで構成と読み違えててWA。そのあとに4個か7個をカウントしてAC。
1240333でrng_58さんがなぜかpythonで回答提出してたメモ
def lucky(n): if n%10 != 4 and n%10 != 7: return False if n < 10: return True return lucky(n/10) n = input() cnt = 0 while n > 0: if n%10 == 4 or n%10 == 7: cnt += 1 n /= 10 print ("YES" if lucky(cnt) else "NO")
- Lucky String
constructive algorithms,strings
ざっくりと大意
・問題文がよく分からなくて解読不能方針のようなもの
・問題文のFor exampleを真似したけどダメだった
#!/usr/bin/env python # -*- coding: UTF-8 -*- import time import sys, io import re, math #start = time.clock() n=int(raw_input()) #l=[int(x) for x in raw_input().split()] w='abcdaefdac' w='abcd' print w*(n/4) + w[:n%4]
なんかabcdを延々と出力するだけだった?謎・・・
C. Lucky Sum of Digits
implementation,math
ざっくりと大意
・4と7だけ使って総和でnになるか??
方針のようなもの
・公倍数の28の分はひたすら7使っていいんじゃないかな??
・あとはてきとーにforループで4,7の組合せで作れるか?
#!/usr/bin/env python # -*- coding: UTF-8 -*- n=int(raw_input()) ans='' if n>28: ans+='7'*(((n/28)*4)-4) if len(ans): n-=(((n/28)*28)-28) for i in range(16): for j in range(10): if n==j*7+i*4: ans+='7'*j ans+='4'*i print ans[::-1] sys.exit() print -1
デバッグ用の行を消し忘れたのも含めて5WAの後でやっとAC。WAになったケースに対してその場しのぎで書き直しながら通したのでとても汚い。。。
654917のwrongさんの簡潔に書かれた回答
def f(): n = int(input()) k = n // 7 while k >= 0: x = n - 7 * k if x % 4 == 0: print('4'*(x//4)+'7'*k) return k -= 1 print('-1') f()
あああ、7を先に使えるだけ使おうとしつつ x%4==0
で12とか8の時に7を使わずに4を使って終了させるようになってるのかな???
私は12とか8とかの時や嫌で方法も分からなかったので二重ループで探したんですけど。