2012-07-01から1ヶ月間の記事一覧

POJ 1978 Hanafuda Shuffle

問題 花札をシャッフルして、操作を終えたときの一番上を求めよ。 解法 普通にやるだけだった。 調べたら、終わりからシミュレーションするという賢い方法があるらしいので こんどやってみようと思う。 #include <cstdio> using namespace std; int N, R; int cards[</cstdio>…

#005のAをHaskell でといてみた

はじめ、'.'を取り除き忘れていて1WA t1 = "TAKAHASHIKUN" t2 = "Takahashikun" t3 = "takahashikun" main = do ns <- getLine str <- getLine let ws = removedot $ words str putStrLn . show $ foldr (\ cs acc -> if cs==t1 || cs==t2 || cs==t3 then ac…

ちょっと書いてみた

すごいH本にシーザー暗号がのっていたので、 もっと安全を期すため(?)に多表式暗号を作れるようにしました。 import Data.Char key = [1, 2, 3, 4, 5, 6] decode = code' (map (* (-1)) key) code = code' key code' ky = fst . foldr (\ c (str,n) -> (chr …

POJ_1258 Agri-Net

問題 解法 最小全域木をつくればいいからプリム法かクラスカル法をつかうといい 僕はプリム法を使いました。 #include <cstdio> #include <queue> #include <vector> #include <algorithm> using namespace std; const int MAX_N = 100; const int INF = 1 << 30; typedef pair<int, int> P; //(cost, v) </int,></algorithm></vector></queue></cstdio>…

foldr

ちょっと書いてみた sum' = foldr (+) 0 map' f = foldr (\ x acc -> f x : acc) []

POJ 2190 ISBN

POJ

問題 ISBNの隠れてしまった文字を求める問題解法 10通りか9通りくらい調べる #include <cstdio> int main(){ int sum = 0, posQ; char c; for(int i = 0; i < 10; i++){ scanf("%c", &c); if('0' <= c && c <= '9'){ sum += (c - '0') * (10 - i); }else if(c == 'X'</cstdio>…