Hatena::ブログ(Diary)

はすけるとぱいそん

2011-10-29

Project Euler 33

問題はこちら

Raitoモジュール素晴らしいです。
こんなものがあったんですね(今更…orz

でもこの問題、イマイチ解ってません。
分子/分母のそれぞれの2桁をab/cdと表したとして、
キャンセルされるのって常にbとcだけなんですか?
aとdやbとdがキャンセルされて問題の条件満たすことってないのでしょうか。
そこがよく解らないんですが、なんだかみなさんのコード見てるとそうみたいなので、
もうそんな感じにしちゃいました(ぉぃ。
たぶん自分の頭があまりにも悪くて、
単純な算数の問題に気づいていないだけだと確信していますが…。

うーん…本当によく解らない。
どうしてだろ。

import Data.Ratio

--約分した形で与えてくれる。f 49 98 なら 1 % 2 って返ってくる。
f :: Ratio Integer -> Ratio Integer -> Rational
f n m = n / m

--分母・分子のそれぞれの桁に数字を入れていき、
--問題の条件に合うものだけを抽出。
x :: [Rational]
x = [ f a c | a <- [1..9], b <- [a..9], c <- [a+1..9],
	 	      f (10 * a + b) (10 * b + c) == f a c ] 

--denominatorは分母を返すんだね!おにいちゃん!
main = print $ denominator $ product x

 
 

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/Mr_Tsubaki/20111029/1319868144