3675463_ac_16ms_1260k.cpp
来自「北大大牛代码 1240道题的原代码 超级权威」· C++ 代码 · 共 58 行
CPP
58 行
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int a, b, c, s;
vector <int> num;
int mark[100000];
int main()
{
int i, t;
while (scanf("%d", &a) == 1 && a != 0)
{
scanf("%d%d%d", &b, &c, &s);
memset(mark, 0, sizeof(mark));
mark[s] = 1;
num.clear();
num.push_back(s);
while (true)
{
t = (s * a + b) % c;
if (mark[t] == 1)
break;
else
{
mark[t] = 1;
s = t;
num.push_back(t);
}
}
int tmp = 1 << 15;
for (i = 0; i < 16; i++, tmp >>= 1)
{
int cnt = 0;
for (size_t j = 0; j < num.size(); j++)
{
if ((num.at(j) & tmp) != 0)
{
cnt++;
}
}
if (cnt == 0)
putchar('0');
else
{
if (cnt == static_cast<int>(num.size()))
putchar('1');
else
putchar('?');
}
}
putchar('\n');
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?