QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#51076 | #858. GCD vs. XOR | FiresonZ | WA | 19031ms | 34852kb | C++17 | 924b | 2022-09-30 15:18:41 | 2022-09-30 15:18:42 |
Judging History
answer
#include<iostream>
#include<array>
#include<algorithm>
#include<cmath>
#include<random>
#include<ctime>
#include<iomanip>
using namespace std;
using gg=long long;
mt19937 RND(time(0));
gg MAX=80000000;
array<gg,2000010> num,tp;
inline gg gcd(const gg &a,const gg &b){return b==0?a:gcd(b,a%b);}
inline gg rnd(const gg &l,const gg &r){
return RND()%(r-l+1)+l;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
gg T,n,t,tmp;
double ans;
cin>>T;
MAX/=T;
for(gg i=1;i<=2000000;i++){
tp[i]=tp[i-1]+i-1;
}
while(T--){
cin>>n;
if(n==1){
cout<<0<<'\n';
continue;
}
tmp=0;
for(gg i=1;i<=n;i++){
cin>>num[i];
}
for(gg i=1;i<=MAX;i++){
gg x=rnd(1,n);
gg y=rnd(1,n);
while(x==y) y=rnd(1,n);
if(y<x) swap(x,y);
if(gcd(num[x],num[y])==(num[x]^num[y])) tmp++;
}
ans=double(tmp)/MAX;
cout<<gg(round(ans*tp[n]))<<'\n';
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 5068ms
memory: 19208kb
input:
1 4 2 3 4 3
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 0
Accepted
time: 7359ms
memory: 19212kb
input:
20 43 128 66 452 384 400 441 232 203 228 33 284 156 128 190 197 292 388 31 179 343 147 206 450 284 180 73 273 130 168 250 405 203 235 340 309 28 267 395 152 191 295 463 344 54 48 7 12 37 49 24 5 18 15 37 26 57 53 59 22 10 2 16 36 52 64 1 56 42 38 46 53 7 2 8 60 38 54 11 19 50 20 61 6 50 27 5 26 3 4 ...
output:
9 54 13 7 8 34 47 11 1 102 6 5 37 1 3 8 8 348 15 0
result:
ok 20 numbers
Test #3:
score: -100
Wrong Answer
time: 19031ms
memory: 34852kb
input:
20 1318434 383714 853663 66866 511925 858736 184314 296349 849141 468962 414270 917939 220934 778184 984811 194692 105206 528188 310859 57152 790101 274637 529663 931099 79533 179471 539390 210762 400829 514992 127623 369248 168711 380204 767781 753089 645551 714964 101060 340524 937457 928656 65201...
output:
3259250 3652625 1805718 2619437 4167321 4285149 2350804 2307074 1788951 4194247 2635802 2991086 1762696 2752781 2615258 3121352 3630091 1346826 5999997 999554000223
result:
wrong answer 1st numbers differ - expected: '3032046', found: '3259250'