#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pp;
typedef pair<ll,ll> pll;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define x first
#define y second
int n, k;
ll t;
int a[2][100010];
int sp[21][100010];
void trans(int h, int F, int T){
ll w = (1ll << h) % n;
for(int i=0; i<n; ++i){
sp[0][i] = a[F][i];
}
for(int i=1; i<=16; ++i){
for(int j=0; j<n; ++j){
sp[i][j]=sp[i-1][j] ^ sp[i-1][(j+w*(1<<(i-1)))%n];
}
}
for(int i=0; i<w; ++i){
a[T][i] = 0;
ll p=i;
for(int j=16; 0<=j; --j){
if(1&(k>>j)){
a[T][i] ^= sp[j][p];
p += w*(1<<j);
p %= n;
}
}
}
for(int i=w; i<n; ++i){
a[T][i]=a[T][i-w] ^ a[F][i-w] ^ a[F][(i+w*(k-1))%n];
}
}
int main()
{
freopen("out.txt", "w", stdout);
n=1e5; k=n/2; t=12345678987654;
//scanf("%d%d%lld", &n, &k, &t);
int F=0, T=1;
for(int i=0; i<n; ++i){
a[F][i]=rand()%int(1e9);
//scanf("%d", &a[F][i]);
}
for(int i=62; 0<=i; --i){
if(1 & (t>>i)) trans(i, F, T), swap(F, T);
}
for(int i=0; i<n; ++i){
printf("%d ", a[F][i]);
}
return 0;
}
Compilation message
WX.cpp: In function 'int main()':
WX.cpp:45:33: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
freopen("out.txt", "w", stdout);
^
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
11008 KB |
Execution killed because of forbidden syscall [unknown syscall - gap in table] (292) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
0 ms |
11008 KB |
Execution killed because of forbidden syscall [unknown syscall - gap in table] (292) |
2 |
Halted |
0 ms |
0 KB |
- |