結果

問題 No.5000 特殊ジャッジテスト(テスト用)
ユーザー yuppe19 😺yuppe19 😺
提出日時 2015-06-19 00:08:19
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 3 ms / 5,000 ms
コード長 2,309 bytes
コンパイル時間 1,218 ms
実行使用メモリ 1,524 KB
スコア -5,236
最終ジャッジ日時 2018-03-12 00:01:32
ジャッジサーバーID
(参考情報)
judge6 /
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
1,524 KB
testcase_01 AC 2 ms
1,520 KB
testcase_02 AC 2 ms
1,516 KB
testcase_03 AC 2 ms
1,524 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <algorithm>
using namespace std;
using i64 = long long;

const int N = 624;
const int M = 397;
const unsigned int MATRIX_A   = 0x9908b0dfU;
const unsigned int UPPER_MASK = 0x80000000U;
const unsigned int LOWER_MASK = 0x7fffffffU;

static unsigned int mt[N];
static int mti = N + 1;

void init_genrand(unsigned int s) {
  mt[0] = s & 0xffffffffU;
  for(mti=1; mti<N; mti++) {
    mt[mti] = (1812433253U * (mt[mti-1] ^ (mt[mti-1] >> 30)) + mti);
    mt[mti] &= 0xffffffffU;
  }
}

void init_by_array(vector<unsigned int> init_key) {
  int key_length = init_key.size();
  init_genrand(19880731U); // まいぷる
  int i = 1, j = 0;
  int k = N > key_length ? N : key_length;
  for( ; k; k--) {
    mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525U)) + init_key[j] + j;
    mt[i] &= 0xffffffffU;
    i++; j++;
    if(i >= N) { mt[0] = mt[N-1]; i = 1; }
    if(j >= key_length) { j = 0; }
  }
  for(k=N-1; k; k--) {
    mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941U)) - i;
    mt[i] &= 0xffffffffU;
    i++;
    if(i >= N) { mt[0] = mt[N-1]; i = 1; }
  }
  mt[0] = 0x80000000U;
}

unsigned int genrand_int32(void) {
  unsigned int y;
  static unsigned int mag01[2] = {0x0U, MATRIX_A};
  if(mti >= N) {
    if(mti == N + 1) { init_genrand(5489U); }
    int kk;
    for(kk=0; kk<N-M; kk++) {
      y = (mt[kk] & UPPER_MASK) | (mt[kk+1] & LOWER_MASK);
      mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1U];
    }
    for(; kk<N-1; kk++) {
      y = (mt[kk] & UPPER_MASK) | (mt[kk+1] & LOWER_MASK);
      mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1U];
    }
    y = (mt[N-1] & UPPER_MASK) | (mt[0] & LOWER_MASK);
    mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1U];
    mti = 0;
  }
  y = mt[mti++];
  y ^= (y >> 11);
  y ^= (y << 7) & 0x9d2c5680U;
  y ^= (y << 15) & 0xefc60000U;
  y ^= (y >> 18);
  return y;
}

int genrand_int31(void) {
  return (int)(genrand_int32() >> 1);
}

int main(void) {
  time_t seed = time(0);
  vector<unsigned int> init;
  init.push_back(0x123);
  init.push_back(0x234);
  init.push_back(0x345);
  init.push_back(0x456);
  init.push_back(seed);
  init_by_array(init);
  int n; scanf("%d", &n);
  i64 a, b;
  do {
     a = genrand_int31();
     b = n - a;
  } while(a == 1 || b != int(b));
  printf("%lld %lld\n", a, b);
  return 0;
}
0