专栏文章
题解:P13635 [NWRRC 2021] Halfway There
P13635题解参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @minnpl3n
- 此快照首次捕获于
- 2025/12/02 05:23 3 个月前
- 此快照最后确认于
- 2025/12/02 05:23 3 个月前
我和楼上的方法差不多,但我优化了一些特殊情况。
题意
求小于 的所有与 互质的数集合中的中位数。
分析
1. 为奇数。
- 由于 是奇数,所以 和 互质。
- 证明:设 为 。
所以 和 互质。 - 因此中位数直接就是 或直接 。
2. 是 的幂。
- 只有质因数 。
- 中位数是 。
3. 是偶数但不是 的幂。
- 我们从 开始向下检查,找到第一个与 互质的最大整数。
- 因为 ,所以与 互质的数是成双成对的,所以这个数就是我们要找的中位互质数。
代码:
CPP#include<bits/stdc++.h>
using namespace std;
int t;
long long hs(long long x){
if(x%2==1)return x/2;//n为奇数情况
if(x&(x-1)==0)return x/2-1;//n为2的幂的情况
for(long long i=x/2;i>=1;i--){
if(__gcd(i,x)==1)return i;
}return 1;//因为数据n>=2,所以可写可不写。
}
int main(){
cin>>t;
while(t--){
long long n;
cin>>n;
cout<<hs(n)<<endl;
}
return 0;
}
完结撒花!求赞。
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...