题面

T

T

T 组数据,每次给出一个数

N

N

N ,问

N

N

N 的所有因数(包括

1

1

1 和

N

N

N)中奇因数个数和偶因数个数的关系(“>”,“<”,还是“=”)。

N

1

e

18

,

T

2

e

5

N\leq 1e18,T\leq 2e5

N≤1e18,T≤2e5.

题解

如果把一个数进行质因数分解,那么我们枚举每一个质因数的出现次数(幂的大小)就可以得到所有因数。

所以固定同一个质因数的出现次数后,对应的因数个数相等(都是其它质因数最高幂次+1的乘积)。

我们还知道一个正整数为偶数当且仅当质因数分解后有 2,一个正整数为奇数当且仅当质因数分解后没有 2 。

那么就可以推出一个结论了:如果

N

N

N 的质因数分解中 2 的幂次(这个可以用

N

N

N 不断除以 2 得到)大于等于 2,说明偶因数个数至少是奇因数的两倍,偶因数大于奇因数;如果等于 1,说明偶因数个数等于奇因数;否则等于 0,说明所有因数都是奇数。

由于只需要得到 2 的幂次与 1 的关系,不太需要直到它具体有多大,所以时间复杂度

O

(

T

)

O(T)

O(T).

CODE

#include<cstdio>
#define LL long long
LL read() {
LL f = 1,x = 0;char s = getchar();
while(s < '0' || s > '9') {if(s=='-')f = -f;s = getchar();}
while(s >= '0' && s <= '9') {x=x*10+(s-'0');s = getchar();}
return f * x;
}
int main() {
int T = read();
while(T --) {
LL N = read();
int ct = 0;
while(!(N&1) && ct < 2) N >>= 1,ct ++;
if(ct == 0) printf("Odd\n");
else if(ct == 1) printf("Same\n");
else printf("Even\n");
}
return 0;
}

最新文章

  1. myBatis中 collection 或 association 联合查询 中column 传入多个参数值
  2. rsync错误日志
  3. AX3空Invoice明细问题
  4. 获取Dell,Lenovo电脑的保修期
  5. 18. 求交错序列前N项和
  6. touch ImageView
  7. C++11中的Lambda表达式
  8. UVa Online Judge 工具網站
  9. OC3-父类指针指向子类对象
  10. 实现html转Xml
  11. C#中的IO流操作(FileStream)
  12. CSS或者JS实现鼠标悬停显示另一元素
  13. 用golang写的生成文件md5sum,检验文件md5sum
  14. 背水一战 Windows 10 (39) - 控件(布局类): VariableSizedWrapGrid, Border, Viewbox, SplitView
  15. java-FFmpeg(一) 实现视频的转码和截图功能
  16. 【sklearn】数据预处理 sklearn.preprocessing
  17. react_app 项目开发 (8)_角色管理_用户管理----权限管理 ---- shouldComponentUpdate
  18. mysql命令大全用户管理相关命令
  19. java程序发布成exe等
  20. Angular待办事项应用3

热门文章

  1. 第2章 C++编程入门
  2. 【生成对抗网络学习 其一】经典GAN与其存在的问题和相关改进
  3. 开发工具-PowerShell下载地址
  4. 在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
  5. 使用React.js写一个类似单选框与复选框的功能
  6. vue按需引入第三方ui插件优化
  7. 编程技巧│提高 Javascript 代码效率的技巧
  8. VisionPro &#183; C# &#183; 界面显示视觉结果图像
  9. Docker 与 K8S学习笔记(二十五)—— Pod的各种调度策略(上)
  10. 基于springBoot项目如何配置多数据源