naoya_t@hatenablog

いわゆるチラシノウラであります

AtCoder Beginner Contest 079

出る予定はなかったのだけれど… 18分26秒で終了。4完(レート変動なし)

A - Good Integer (100)

投げやりにawkで。AC (1:42)

/(111|222|333|444|555|666|777|888|999|000)/{print "Yes"; exit}
{print "No"; exit}

// [0-9]{3}みたいな正規表現が使える言語で書いたほうがいいよね...

B - Lucas Number (200)

投げやりにpython2で。AC (5:50)

N=int(raw_input())
l1, l2 = 1, 2
for n in range(N-1):
  l1, l2 = l1+l2, l1
print l1

C - Train Ticket (300)

python2。総当りevalで。AC (10:00)

import sys
a,b,c,d = [c for c in raw_input()]
for op1 in ('+','-'):
  for op2 in ('+','-'):
    for op3 in ('+','-'):
       t = a + op1 + b + op2 + c + op3 + d
       if eval(t) == 7:
         print t + '=7'
         sys.exit()

D - Wall (400)

WFのスニペットを使いたかったのでC++で。AC (18:26)

#include <bits/stdc++.h>
using namespace std;

#define rep(var,n)  for(int var=0;var<(n);++var)

int main() {
    int H,W; cin >> H >> W;
    int c[10][10];
    rep(i,10) rep(j,10) cin >> c[i][j];
    rep(k,10) rep(i,10) rep(j,10) c[i][j] = min(c[i][j], c[i][k]+c[k][j]);
    // 200 x 200 x 1000 = 4e7
    int total = 0;
    rep(i,H) rep(j,W) {
        int aij; cin >> aij;
        if (aij == -1) continue;
        total += c[aij][1];
    }
    cout << total << endl;
    return 0;
}

スニペットにするまでもない事なんだけど。三重forループの順番間違える人だから。