読者です 読者をやめる 読者になる 読者になる

君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

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")
  1. 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とかの時や嫌で方法も分からなかったので二重ループで探したんですけど。