桜梅桃李 -2ページ目

プロジェクトオイラーを解いてみるPart2

だいぶ間が空いちゃいましたが、2問目

問題はこちら


Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms.

フィボナッチ数列の項は前の2つの項の和である。 最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。



これも第1問同様難しくはありません。
[ % ]を使えたらなんてことないです。

◆解法

数列の次項を作りながら偶数だけを足していく。

◆プログラム


#include

main() {

int a, b, c;
int sum;

a = 1;
b = 2;
sum = 2;

while(1) {

c = a + b;

if(c > 4000000)
break;

if(c % 2 == 0)
sum += c;

a = b;
b = c;

}

printf("%d", sum);

}


◆解説

400万まで1からループさせてもいいのですが、PCによっては少し時間がかかってしまうので、無限ループさせる中で、400万を超えた時点でbreakでループから抜け出します。

偶数を見分ける方法は、「%」を使います。

他の言語によっては「mod」というものを使うかもしれません。
これは、前の数字を後ろの数字で割ったときの余りという意味です。

これを使って、できた数列の項を2で割り、余りが0のものを探します。
これがつまり偶数です。

それだけを足していきます。


余談なのですが、この記事を書くに当たって問題を解き直しました。
だいぶ前に解いたものでしたが、訳がわからない。

配列を40個用意して、その中にすべての数列を入れていました。

なぜ40個なのか。

そしてなぜそれだけで解けたのか。。。。

プロジェクトオイラーを解いてみるPart1

さて、早速1問目。

問題はこちら。



If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.


10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、 これらの合計は 23 になる。

同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。



こんな問題です。

これはわりかし簡単かと。

◆解法

1000までカウントする中で3と5の倍数を足していく。


◆プログラム


#include

main() {

int cnt; //彼が3と5の倍数探しの旅に出ます。
int sum; //そして彼が足していきます。

sum=0; //初期値は勿論0

for(cnt=0;cnt<1000;cnt++){
if(cnt%3==0||cnt%5==0){
sum=sum+cnt;
}
}

printf("%d",sum);

}



◆解説

この問題は、特別な関数も使うことなく解けると思います。

for文で1から1000までカウントさせる中で、3または5の倍数の時足していきます。

if文を[ cnt % 3 == 0 && cnt % 5 == 0 ]としないように注意してください。

これでは[ cnt % 15 ]と同義になってしまいます。

プロジェクトオイラーを解いてみるPart0

ということでタイトル通り

不定期だけど、週1以上の更新は頑張りたい。


基本的にはC言語で解いていこうと思いますが、後々はJavaとかその他の言語にも手を出すかも。


まずはプロジェクトオイラーとは何なのかと。

こちらです。

英語ばっかりです。

英語が苦手な僕にはここから時間がかかってしまいます。

そんな時のためにあるのがこちら

プロジェクトオイラー御本家を日本の有志の方が翻訳されています。


ここを見ながら1問1問解いていこうと思います。


それではプロジェクトオイラーの説明。

ザックリといいますと、数学的な問題を、プログラムを作って解きましょう!

というサイトです。

普通の問題では飽き足りないという学生さんなんかにはいいらしいです。

すでに数問僕も解いていますが、結構考えることが必要で、面白いです。

基本ルールとしては、「1分ルール」というものがあります。

そこそこのスペック(これは曖昧)のマシンであれば1分以内に解けるプログラムに仕上げることが条件です。

1,000行ものプログラムを処理するには、結構な時間がかかります。

しかしこれを効果的な実装によって200行くらいに減らせることもあるかもしれません。

そういう工夫も含めてといてくださいということです。


また、プロジェクトオイラーでは、アカウント登録をして正解数を記録することができます。

これについては本家を使わなければならないのですが、そこまで難しいことはありません。


(1)画面上部のLoginをクリックします。
桜梅桃李-オイラーTOP

(2)次に入力フォームが出てきますので、その下のregisterをクリック。
$桜梅桃李-オイラー登録01


その後フォームに必要事項を書いて送信すればおk

ちょっとスクリーンショット取るのが面倒。

というか、再登録がだるい・・・。


そして、ログインしますと、いろんな情報が見れます。

国別の参加人数や、正解数ランキングなど。



ぜひみなさんも登録してみてください。


完璧マスター! C言語

¥2,100
楽天

ブログ趣旨変更

ブログの更新が滞っているので、SEに内定もしたことだしそういう関連のことも書いてみようかと思います。

追々は初心者に向けたこととかもかけたらいいなと

とりあえず、最初はプロジェクトオイラーでも解いてみようかと。

今年もよろしくお願いします。

久々に書きまっせ。

旧年中はお世話になりました。


演劇関係では、年頭の不思議少年旗揚げ公演『自立』

これはほんとに皆さんにご迷惑をおかけしまして、自立なのに依存しっぱなしでした。


その後はGKKかしら

飛び入りで、スタッフとして参加させていただきまして、2日間受付でニコニコしてました。

N先生から打ち上げの時に手を握りながら言われた、

「君の受付での笑顔にキュンキュンして、毎回受付に並ぶのが楽しみでした。」

という言葉がいまだに心に残っています。あれこれってこい?


あ、GKKの前にリーディング公演が先ですっけ?

上通物語に参加させていただきまして、緊張の連続でした。

その直前鳥と王様で藤園中にも行きまして。

アドリブとかアドリブとか

正直死にそうでした

藤園中といえば今日の熊日新年号第2部の1面飾ってる、橋本愛さんが居たとか居ないとか

緊張でぜんっぜん覚えてないわ。


その後は何したのかな

もう、年末のランアンドクライかな?

それでも、またまた皆さんにはたくさんご迷惑おかけしました。


学校は、夏に大学編入試験があってバタバタしてました。

結果落ちたんですけどね。

その後11月かな?

無事就職が決まりまして、来年度の身の振りも決まりました。

4月と10月の応用情報技術者試験は落ちましたけどね!

ま、今年も受けれたら受けますよ。

次こそ受かるんだから


他には9月に東京に行って、友達たくさん作ってきました。

今でも仲良くしてくれてる人たくさんいるからそれでよし!

特に、裏方さんとかエスプレちゃんとかノノとかカズトさんとか

あげたらキリがない。

あ、もちろん、らっちも聖璃菜もね!



今年は、2月から社会人。

ま、身分は学生なんですが、研修に入ります。

演劇は所属がフリーになりますがこの話はまた別の機会に。

5月には雨傘屋さんのお手伝いはするつもりであります。

ま、会社には秘密裏にですが。


こんなもんかしら

今年度中には引越しもしたいな

もっと家賃が安いところがいい!

ちょっとくらい狭くてもいいや


それでは今年もよろしくお願いします。