実行時間制限: 2 sec / メモリ制限: 64 MiB
問題文
PA 君はある日,Wikipedia でアッカーマン関数という関数に出会った. Wikipedia によると,アッカーマン関数 A(m, n) は次のように再帰的に定義される関数である.
- A(0, n) = n+1 (n ≥ 0)
- A(m, 0) = A(m-1, 1) (m ≥ 1)
- A(m, n) = A(m-1, A(m, n-1)) (m, n ≥ 1)
アッカーマン関数は与える数が大きくなると関数の値が爆発的に大きくなることで有名である.PA 君はアッカーマン関数の値を試しに手で計算しようとしたが,あまりに大変ですぐに諦めてしまった. あなたのタスクは,PA 君の代わりにアッカーマン関数の値を計算することである.
入力形式
入力は以下の形式で与えられる.
m n
m, n はそれぞれアッカーマン関数の 第一引数, 第二引数 である.
出力形式
A(m, n) の値を 1 行で出力せよ.
制約
- 0 ≤ m ≤ 3
- 0 ≤ n ≤ 60
- 入力値はすべて整数である.
入出力例
入力例 1
2 3
出力例 1
9
入力例 2
3 45
出力例 2
281474976710653Writer: 花田裕一朗,小浜翔太郎 Tester: 楠本充
出典
KUPC 2012 Practice実行時間制限: 2 sec / メモリ制限: 64 MiB
問題文
K 桁の数が書かれたカードが N 枚ある.
N 枚のカードを1列に並べることにより, K×N 桁の数を構成することが出来る.
どのようにカードを並べると, 最も値の大きな数を構成することが出来るだろうか.
入力形式
入力は以下の形式で与えられる.
N\ K\ a1\ ...\ aN\
N はカードの数であり,K はカードに書かれた数の桁数である.
ai は i 番目のカードに書かれた数を表す.
出力形式
カードを1列に並べた時に構成することが出来る数の最大値を1行に出力せよ.
制約
- 1 ≤ N ≤ 100, 1 ≤ K ≤ 30
- ai はちょうど K 桁の正の整数であり、最上位の桁は0ではない.
入出力例
入力例 1
2 4 1234 4321
出力例 1
43211234
2 枚のカードの並べ方を変えることにより, 12344321 と 43211234 のいずれかを構成することが出来る. よって構成することのできる最大の数は 43211234 である.
入力例 2
3 3 111 333 222
出力例 2
333222111
3 枚のカードの並べ方は 6 通り考えられる.
Writer: 田村和範 Tester: 楠本充
出典
KUPC 2012 Practice実行時間制限: 2 sec / メモリ制限: 64 MiB
問題文
アーサーとフォードは無事に地表に降り立つことができた.しかし,この惑星は未開の惑星で,空を飛ぶための特訓や英会話の練習くらいしかやることが無かった.暇になったアーサーは,ちょうど手元に持っていた宇宙共通海抜高度計と初速度 v 角度45度で入れたものを発射できる大砲を使って,現在地の高さ h と初速度 v とこの惑星の重力 g を調べることにした.
具体的には t 秒後に海抜高度計が高さを記録するようにして,その海抜高度計をタオルに包んで丸めて入れて大砲に入れる.そして,すぐさまこのタオルを発射し,t 秒後のタオルの高さ y を記録する.これを何度か繰り返して間接的にh, v, gを調べるのだ.
さて準備はととのった.あとは t をどのようにセットするかを考えるだけだ.
入出力形式
入力は全て小数12桁までの実数で与えられる.
アーサーはタオルを大砲に入れ発射し t 秒後にタオルの海水面からの高さを調べるか,もしくは,現在地の高さ h と大砲からタオルが発射される時の初速度 v とこの惑星の重力 g を確定させることができる.
タオルを大砲に入れ発射し t 秒後に海抜高度計を使って観測を行うには
printf("? %.12f\n", t); fflush(stdout);
とする.次に,
scanf("%lf", &y);
とすると発射されてから t 秒後のタオルの海水面からの高さが得られる.もしも t \lt 0 または 1000 \lt t となるような時間をセットすると実際の高さにかかわらず y には -1 が入る.
現在地の高さ h と大砲からタオルが発射される時の初速度 v とこの惑星の重力 g を確定させるには
printf("! %.12f %.12f %.12f\n", h, v, g); fflush(stdout);
とする.このとき,h, v, g がそれぞれの実際の値との絶対誤差がで 10^{-5} 以下になっていなければならない.
なお,上記以外の出力を行った場合は誤答(Wrong Answer)と判定される.
制約
- 0 ≤ h ≤ 10^4
- 0.1 ≤ v ≤ 1,000
- 0.1 ≤ g < 100
- 入力値は全て小数12桁までの実数である.
- タオルを大砲に入れ発射することを最大 10 回まで行える.それを越えると大砲が壊れて使えなくなり,誤答(Query Limit Exceeded)となる.
- y は y = -gt^2/2 + vt / \sqrt{2}+ h という等式を満たす.
入出力例
| プログラムの出力 | プログラムへの入力 |
|---|---|
| ? 1.41 | |
| 10.192110797 | |
| ? 2.71 | |
| 2.31467840781 | |
| ? 3.14 | |
| -3.93851731148 | |
| ! 0.000000 20.000000 9.806650 |
プログラムはまず初めにタオルが発射されてから 1.41 秒後にタオルの高さを調べるように海抜高度計をセットしている.
その結果,発射されてから 1.41 秒後にはタオルの海面からの高さは 10.19 という事が分かる.
その後何度か調査を行い,最終的に現在地の高さ h は 0,タオルの初速度 v は 20,この惑星の重力加速度 g は 9.80665 と結論づけている
Writer : 花田裕一朗 Tester : 楠本充,森槙悟
出典
KUPC 2012 Practice実行時間制限: 5 sec / メモリ制限: 128 MiB
問題文
Kはある大学で線形代数の講師をしている。 基礎学力を重視するKは生徒に行列の掛け算の問題のレポートを出した。 しかし、Kは授業の予習、サークルの顧問、中間試験の作成などで、レポートの採点をする時間がない。 TAであるあなたはKからレポートの採点を頼まれた。あなたの仕事は N \times N 行列 A,B,C が与えられた時に、A \times B = C であるかどうかをチェックすることである。
入力形式
入力は以下の形式で与えられる。
N
A_{11} A_{12} ... A_{1N}
A_{21} A_{22} ... A_{2N}
...
A_{N1} A_{N2} ... A_{NN}
B_{11} B_{12} ... B_{1N}
B_{21} B_{22} ... B_{2N}
...
B_{N1} B_{N2} ... B_{NN}
C_{11} C_{12} ... C_{1N}
C_{21} C_{22} ... C_{2N}
...
C_{N1} C_{N2} ... C_{NN}
出力形式
A \times B = Cを 満たすならYES、満たさないならNOを一行に出力せよ。
制約
- 1 \leq N \leq 1000
- -1,000 \leq a_{ij}, b_{ij} \leq 1,000
- -10^9 \leq c_{ij} \leq 10^9
- 入力値はすべて整数である.
この問題の判定には,99 点分のテストケースのグループが設定されている.このグループに含まれるテストケースは上記の制約に加えて下記の制約も満たす.
- N = 1
入出力例
入力例1
1 1 2 2
出力例1
YES
入力例2
3 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
出力例2
NO
入力例3
3 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 90 96 102 216 231 246 342 366 390
出力例3
YES
ヒント
似たような問題
プログラミングコンテストでの乱択アルゴリズム
Writer : 森槙悟 Tester : 楠本充