专栏文章
题解:P13685 【MX-X16-T3】「DLESS-3」XOR and Impossible Problem
P13685题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mioetix8
- 此快照首次捕获于
- 2025/12/02 18:02 3 个月前
- 此快照最后确认于
- 2025/12/02 18:02 3 个月前
P13685 题解:
(本蒟蒻的第一篇题解,各位大佬不喜轻喷)
赛时被这题给创飞了,居然没发现规律。
其实规律比较好找,(打个暴力就行) 暴力程序相信各位巨老都会,就不放代码了。(懒得放)
赛时被这题给创飞了,居然没发现规律。
其实规律比较好找,(
但当我们提交这份程序时就会喜提子任务2、3的TLE。
回头看一看此题的数据范围:
这么大的数据范围肯定要找规律。
回头看一看此题的数据范围:
这么大的数据范围肯定要找规律。
看到样例最大给到 ,那么将样例增大一点到,输出结果:
居然是0!
再不停增大的大小,发现无论为多大,当时,结果总是为0
居然是0!
再不停增大的大小,发现无论为多大,当时,结果总是为0
于是给程序加个特判就能轻松AC此题~
考虑更严谨的证明:(参考这里)
在二进制下,如果所有的数中0的个数超过64个,那么与模完之后就会是0。
设此个数中最低位有a个0、b个1,那么至少会有个0。(可以枚举一些较小的数试试)
因此我们在小时暴力、大时输出即可。
设此个数中最低位有a个0、b个1,那么至少会有个0。(可以枚举一些较小的数试试)
因此我们在小时暴力、大时输出即可。
Code:
CPP//码风较为诡异 见谅
#include<bits/stdc++.h>//本人偏向于用万能头
using namespace std;
typedef unsigned long long ll;//数字较大,保险一点用ull装
const int N=1e6+7;
int t;
int n;
ll a[N];
int mian(){
cin>>t;
while(t--){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
if(n<17){
//ll mod=pow(2,64); 模数,不加也没有影响
ll ans=0;//暴力统计答案
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
if(i==1&&j==i+1) ans=a[i]^a[j];
else ans*=(a[i]^a[j]);
ans%=mod;
//其实也可以在ans==0时跳出循环,乘0 ans还是0
}
}
cout<<ans<<"\n";
}else{
cout<<0<<"\n";
}
}
return 0;
}
(求过!求过!求过!)
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...