No.1004 サイコロの実装 (2)
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 232
作問者 :
trineutron
/ テスター :
37zigen
タグ : / 解いたユーザー数 232
作問者 :

問題文最終更新日: 2022-04-26 01:58:44
問題文
線形合同法という擬似乱数生成法がある。正の整数を用いてという漸化式で乱数を生成する。例えば、のときとなる。
剰余を求める演算は通常は遅いが、のとき、32bit符号なし整数型でを計算するとオーバーフローにより剰余が計算できるため高速に計算できる。このとき、をで割った余りがとなる整数、を奇数にすると最大周期になることが知られている。以下、とする。
サイコロを実装するためにはからまでの整数がおおむね等確率で出る乱数が必要なので、をで割った余りにを足した整数をサイコロの出目とする。
高橋君と青木君はこのサイコロを使って以下のようなすごろくをすることにした。
2人とも最初はマスにいる。高橋君を先手として交互にサイコロを振り、出目の分だけ進む。止まったマス目が奇数なら黒石を、偶数なら白石を得る。これを回繰り返し、黒石と白石の組1つにつき点が得られる。
例えば、が、出目がのとき、高橋君はマスに止まり黒石個を得て、青木君はマスに止まり黒石個と白石個を得る。得点はそれぞれ点と点となる。
が与えられるので、高橋君と青木君のそれぞれの得点を求めよ。なお、サイコロの最初の出目はをで割った余りにを足した整数とする。
入力
入力は全て整数
をで割った余りは
は奇数
出力
高橋君と青木君の得点をスペース区切りで出力してください。最後に改行してください。
サンプル
サンプル1
入力
5 1 1 1
出力
0 0
なので、高橋君はを出してマスに止まり、黒石を得ます。次に、青木君がを出してマスに止まり、白石を得ます。2人とも黒石と白石の組はないので、得点はです。
サンプル2
入力
3000000001 3000000001 3000000001 0
出力
0 0
サイコロを振らない場合もあります。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。