当前位置: 首页 > news >正文

2025.10.29__jyu每日一题题解

完全平方数

题目大意

给定一个正整数 \(n\),找到最小的正整数 x,使得它们的乘积是一个完全平方数。

思路

1. 定理

算术基本定理指出:任何大于1的自然数 \(N\),要么本身是素数,要么可以唯一地分解为有限个素数的乘积。具体表述为:
$ N = p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k}$
其中 \(( p_1 < p_2 < \cdots < p_k )\) 为素数,\(a_i\) 为正整数,且这种分解方式在不考虑素数排列顺序时是唯一的。
那么我们可以将 \(n\) 分解成一堆素数的乘积。
如果我们分解完全平方数,就会发现它分解出来的素数的 \(a_i\)都为偶数。

证明也很简单:
一个完全平方数必然可以由 sqrt(n) * sqrt(n) 得到。
每个 sqrt(n) 可以根据算数基本定理分解成若当素数的乘积。
然后两个 sqrt(n) 相乘去得到 n,那么相当于每一个素数的指数乘2,那么得到的 n 根据算数基本定理分解出来的若当素数的指数必然是偶数。

那么如果我们想让 \(n\) 乘上某一个数 \(x\)之后变成完全平方数,相当于是让它分解出来的素数的指数全都变为偶数。
那么我们就分解 \(n\), 如果某一个素数的指数是奇数,那么说明我们要补上这个素数,那么答案的x就要可以分解出一个这个素数。
依次检验即可。

代码

点击查看代码 void solve(){cin >> n;int x = 1;for(int i = 2; i <= n / i; i ++){if(n % i == 0){int cnt = 0;while(n % i == 0) n /= i, cnt ++;if(cnt % 2 == 1) x *= i;}}if(n != 1) x *= n;cout << x << endl; } ``` <->//代码 ```
http://www.jsqmd.com/news/26006/

相关文章:

  • CSP-J/S2024 游记
  • 以《出师表》作为例子,对比通用分块和父子分块的区别
  • 苏联套娃
  • DP 状态设计
  • winget不可用,一直转圈,文字变蓝色
  • Uno Platform 6.3 发布:支持 .NET 10 预览版并兼容 VS 2026
  • 线段树入门 - idle
  • 2025年10月临江鳝丝店推荐:五家口碑店铺综合对比排行
  • 文档抽取技术在智能合同对比系统中的应用与优势分析
  • 2025年10月临江鳝丝店对比报告:详析五家店铺特色与差异
  • vs2022(2026)离线安装失败的问题解决
  • 家训
  • 2025年10月临江鳝丝店推荐榜:五家口碑店铺深度对比与选择指南
  • VisionPro学习笔记-CogFixtureTool
  • 2025年10月临江鳝丝店推荐榜单:五家特色店铺详细对比分析
  • 博客园geek主题拓展-1
  • 2025年10月临江鳝丝店推荐:乐山地区五家优质店铺榜单与对比分析
  • 2025年10月临江鳝丝店详细评测:结合实地体验与行业标准
  • 2025年10月临江鳝丝店评价榜:传统与创新菜系全面解析
  • 25岁零基础转行软件测试挑战高薪,真的可以么?
  • 提高组模拟赛 40 A. 子序列 题解
  • 业务人员能学低代码吗
  • 低代码只能做简单表单?复杂业务场景的适配方案
  • ARC183 做题记
  • C++小白修仙记_LeetCode刷题_459重复的子字符串
  • 《强化学习数学原理》学习笔记7——从贝尔曼最优方程得到最优策略 - 教程
  • 白忙活这么多年!早知道有这9款软件,我少熬好几个通宵!
  • P4427 [BJOI2018] 求和
  • C++ string底层完成逻辑(与类知识点结合)string——下
  • Python电力负荷预测:LSTM、GRU、DeepAR、XGBoost、Stacking、ARIMA结合多源数据融合与SHAP可解释性的研究