Uva Online Judgeで解いた問題を適当に解説します。

3ということで、前回前々回の続きです。

10018 Reverse and Add

10018 - Reverse and Add

$n = 入力 + reverse(入力)$ を計算、回文だったらその値を返す。 回分でなければ、$ 入力 = n $ として回文になるまえ繰り返す問題だった。

ここで言う回分というのは、12321のような整数のこと。

問題文に "palindrome that is not greater than 4,294,967,295. " とあったので、BigNumber を使う必要は特に無く、unsigned long long int で対応できた。

ごく普通に、回文を返す関数回分かどうかを判定する関数を実装して、問題を解いた。

Read more


Uva Online Judgeで解いた問題を適当に解説します。

2ということで、前回の続きです。

Where’s Waldorf?

問題

10010 - Where’s Waldorf?

問題
MxNの広さの2次元の行列から単語を検索する問題。
単語は、上、下、左、右、右上、左上、右下、左下の8通りの並び方がある。(縦読みや横読み的な)
また、大文字と小文字は区別しない。
入力
書くのが面倒なので省略。
出力
見つけた単語の1文字目の座標

解説

特にアルゴリズムの工夫のしようもないので、総当りで解く。 ちょっとした工夫としては、1文字目を見つけた次に最後の文字から照合すると、 文字の座標的にありえないケースを早々に飛ばすことができる。

大文字と小文字を区別しないので、入力を読み取るときにどちらかに統一する。

Read more


Uva Online Judgeで解いた問題を適当に解説します。

The 3n+1 Problem

問題

100 - The 3n + 1 problem

問題
ある整数nに対して、問題文のように数列を1になるまで計算する。
nを iからjの 範囲にして、数列を計算した時、
1で終わるまでの数列のサイクル数が最大になるときのサイクル数を求める。
入力
1つのテストケースに対して、次の1行の入力。
i, j
出力
i, j, 最大のサイクル数

Read more