結果
| 問題 | 
                            No.1004 サイコロの実装 (2)
                             | 
                    
| コンテスト | |
| ユーザー | 
                             sitihi
                         | 
                    
| 提出日時 | 2020-03-06 23:16:46 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 640 bytes | 
| コンパイル時間 | 1,527 ms | 
| コンパイル使用メモリ | 166,476 KB | 
| 実行使用メモリ | 10,496 KB | 
| 最終ジャッジ日時 | 2024-10-14 09:46:42 | 
| 合計ジャッジ時間 | 5,427 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 6 WA * 18 TLE * 1 -- * 13 | 
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:9:25: warning: overflow in conversion from 'double' to 'unsigned int' changes value from '4.294967296e+9' to '4294967295' [-Woverflow]
    9 |     unsigned int m = pow(2, 32);
      |                      ~~~^~~~~~~
            
            ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(){
    unsigned int a, b, xo, n; 
    unsigned int i, tk_b=0, tk_w=0, ak_b=0, ak_w=0, tk=0, ak=0;
    //vector<int> tkh(n);
    //vector<int> tkh(n);
    unsigned int m = pow(2, 32); 
    cin >> a >> b >> xo >> n;
    xo = a*xo + b; 
    xo = xo %m;
    for(i=0; i<n; i++){
      xo = a*xo + b; 
      xo = xo%m;
      tk += xo%6 + 1;
      if(tk%2 == 0) tk_w++;
      else tk_b++;
      xo = a*xo + b; 
      xo = xo%m;
      ak += xo%6 + 1;
      if(ak%2 == 0) ak_w++;
      else ak_b++;
    }
    a = min(tk_w, tk_b);
    b = min(ak_w, ak_b);
    cout << a << " " << b << endl;
}
            
            
            
        
            
sitihi