Problem Statement
Given is a positive integer
N
N
N.Which are there more of, positive odd divisors of
N
N
N or positive even divisors of
N
N
N?
翻译:给定数字
N
(
N
≤
1
0
18
)
N (N≤10^{18})
N(N≤1018),判断
N
N
N的所有因数中,奇数多还是偶数多。
传送门
数论题。
第一次做稍微有点硬核的数论题,消化好一阵才搞明白。
一开始做的时候一直觉得自己是不是有什么结论不会,后来仔细想想这个操作也挺常规的。
官方题解
官方题解思路: 首先将数字拆分为
2
n
×
a
(
a
2^n×a(a
2n×a(a为奇数
)
)
)的形式,这样
a
a
a的所有因数就集合是{
2
i
×
j
2^i×j
2i×j}
(
(
(其中
i
=
0
,
1
,
2
,
.
.
.
,
n
;
j
i=0,1,2,...,n;j
i=0,1,2,...,n;j是
a
a
a的因数
)
)
)
原因:因数的因数是因数
最后,如果
N
N
N有m个奇数因子,就有n×m个偶数因子。
最后判断m与n×m的大小关系就可以了
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;cin>>t;while(t--)
{
long long a;
cin>>a;
int i=0;
int flag=0;
while(pow(2,i)<=a)
{
long long b=pow(2,i);
if(a%b==0)
{
flag=i;
}
i++;
}
if(flag==0) cout<<"Odd";
else if(flag==1) cout<<"Same";
else cout<<"Even";
cout<<endl;
}
return 0;
}