Codeforces | 1475A Odd Divisor
【题目描述】
给定一个整数n,判断 n 是否有大于1 的奇数因数;
【输入格式】
第一行一个整数 t,表示测试数(1 <= t <= 1e4);
接下来 t 行,每行一个整数 n(2 <= n <= 1e14);
【输出格式】
若存在大于1的奇数因子,输出“YES”,否则输出“NO”;
【解题思路】
由于 n 的范围很大,所以:
(1)long long存储;
(2)不可以循环遍历判断 ==》 推导有用的性质进行直接判断;
具体性质如下:
(1)如果一个数有大于 1 的奇数因子,则必存在大于 1 的奇数质因子;
原因:奇数 = 奇数 * 奇数,所以一个大于 1 的奇数必然可以分解到出现奇数质因子;
(2)如果一个数 n 没有大于 1 的奇数因子,意味着它只有偶数因子(分解质因数),但是大于 1 的偶数质数只有 2,故除非 n 是 2 的m(m >= 1)c次幂,否则一定存在大于 1 的奇数因子;
(3)n 是 2 的幂可以二进制表示为 n & (n - 1)= 0;
链接:https://codeforces.com/blog/entry/87188
【正确代码】
1 #include <iostream> 2 3 using namespace std; 4 5 typedef long long ll; 6 7 int main() 8 { 9 int t; 10 scanf("%d", &t); 11 while(t --) 12 { 13 ll n; 14 scanf("%lld", &n); 15 if(n & (n - 1)) puts("YES"); 16 else puts("NO"); 17 } 18 return 0; 19 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架