paizaオンラインハッカソン7(#_poh 7)にチャレンジしました!(後編)

By | Date : 2015/12/24 ( Last Update : 2016/02/19 ) | 133 views

カテゴリ : C# プログラミング タグ: , ,

こんにちはー!ニアです。

今回は「paizaオンラインハッカソン7(#_poh 7)にチャレンジしました!(前編)」の続きです。

使用した言語はC#です。

まだ解いていない方は、ネタバレに気を付けてね。

 

 

3. ランクB編

3.1. A1: 画像分析(メガネ)

標準入力から入力画像とパターン画像(どちらも値は0か1です)を読み取り、パターン画像と一致する入力画像の部分の左上の座標を出力します。

シンプルに、入力画像の左上から順にパターンマッチングして求めることができます。

 

 

3.2. A2: ケーキの分割(サンタ服)

標準入力からケーキのサイズ及びケーキを切る向きとその位置を読み取り、切り分けられたケーキの体積の最小値を出力します。

問題文より、ケーキを切る向きは「前面と平行な向き」または「側面と平行な向き」です。それぞれの切る位置を格納するリストを作り、切る位置及び左上と右下の位置をそれぞれ追加して昇順にソートします。そこから幅及び奥行きの長さの最小値を求め、それらと高さから切り分けられたケーキの体積の最小値を求めていきます。

 

 

4. ランクA編

4.1. A3: 大きな値の階乗の一部を算出(水着)

標準入力から値を読み取り、その階乗の下位9桁(末尾から続く0を除く)を出力します。

シンプルに読み取った値から1まで降順に掛けつつ、10で割り切れなくなるまで10で割って末尾から続く0を取り除き、10憶の余剰で下位9桁分を取り出していくと求まるのでは・・・と思いますが、このプログラムではテストケース4で失敗します。

また、1から順に掛けた場合、テストケース1で失敗します。

 

◆ 掛ける数に含まれる素因数から、2の数と5の数をカウントしよう

掛ける値に含まれる10の素因数こと2の数及び5の数をカウントアップし、その分だけで割ったものを掛けます。そしてカウントアップした2の数と5の数の差分だけ2(2の数が多い場合)もしくは5(5の数が多い場合)を掛けます。

POH7-A3

これですべてのテストケースをクリアしました。

 

◆ 階乗に含まれる素因数は、2の数 ≧ 5の数

2~100000の階乗に含まれる素因数を調べてみたところ、2の数の方が5の数より多いです。よって、先ほどのプログラムの29行目にあるif文に指定した条件式は、nが2以上であれば常に満たすので、37行目~43行目部分を省略しても問題ないです。

素因数分解 2の数(1からの累積) 5の数(1からの累積)
1 1 0 0
2 2 1(1) 0(0)
3 3 0(1) 0(0)
4 2^2 2(3) 0(0)
5 5 0(3) 1(1)
6 2×3 1(4) 0(1)
7 7 0(4) 0(1)
8 2^3 3(7) 0(1)
9 3^2 0(7) 0(1)
10 2×5 1(8) 1(2)
11 11 0(8) 0(2)
12 2^2×3 2(10) 0(2)
13 13 0(10) 0(2)
14 2×7 1(11) 0(2)
15 3×5 0(11) 1(3)
16 2^4 4(15) 0(3)
17 17 0(15) 0(3)
18 2×3^2 1(16) 0(3)
19 19 0(16) 0(3)
20 2^2×5 2(18) 1(4)

POH7-A3b

POH7-A3c

また、「paizaオンラインハッカソン7(#_poh 7)にチャレンジしました!(前編)」のH2で行ったひと工夫を活用してみましょう。掛ける数の素因数に含まれる5の数の分だけ2の数をカウントダウンすることで、2の数と5の数の差分を求めることができます。

 

単純そうに見えて、考えさせられる問題でした。

今回はC#でプログラミングしましたが、別の言語でもやってみようかな?

 

3. ところで、コーディネートはどんな感じ?

私のは髪を茶色のボブヘア、目をたれ目、服装をカーディガンで霧島さん(POH3・6)スタイルにコーディネートしました。

https://paiza.jp/poh/ando/share/9f831288

ando-ann

 

それでは、See you next!

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*