蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)

news/2024/11/8 14:14:28/

文章目录

  • [蓝桥杯 2021 省 AB2] 完全平方数
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 样例 #2
      • 样例输入 #2
      • 样例输出 #2
    • 提示
      • 思路:
        • 理论补充:完全平方数的一个性质:完全平方数的质因子的指数一定为偶数
        • 最终思路:
        • 小插曲:
      • 全部代码

[蓝桥杯 2021 省 AB2] 完全平方数

题目描述

一个整数 aaa 是一个完全平方数,是指它是某一个整数的平方,即存在一个 整数 bbb,使得 a=b2a=b^{2}a=b2

给定一个正整数 nnn,请找到最小的正整数 xxx,使得它们的乘积是一个完全平方数。

输入格式

输入一行包含一个正整数 nnn

输出格式

输出找到的最小的正整数 xxx

样例 #1

样例输入 #1

12

样例输出 #1

3

样例 #2

样例输入 #2

15

样例输出 #2

15

提示

对于 30%30 \%30% 的评测用例, 1≤n≤10001 \leq n \leq 10001n1000,答案不超过 100010001000

对于 60%60 \%60% 的评测用例,1≤n≤1081 \leq n \leq 10^{8}1n108,答案不超过 10810^{8}108

对于所有评测用例,1≤n≤10121 \leq n \leq 10^{12}1n1012,答案不超过 101210^{12}1012

蓝桥杯 2021 第二轮省赛 A 组 G 题(B 组 H 题)。

思路:

这一看直接暴力就只能得一点点分,我还数论学的不太好先暴力得了30分。然后开始想办法吧!
没办法。。。看答案吧。。。

理论补充:完全平方数的一个性质:完全平方数的质因子的指数一定为偶数

1.唯一分解定理任意一个数 n,它都可以分解为若干个质数的乘积。

2.需要知道完全平方数的一个性质:完全平方数的质因子的指数一定为偶数。附上大佬的证明过
程:
在这里插入图片描述

最终思路:

对n进行质因数分解,如果质因数的指数为奇数的话就在x中乘以这个质因子这样,可以让指数保持偶数,如果是偶数那就不用管它~~~~
1.分解质因子:

for (long long i = 2; i * i <= n; i++){if (n % i == 0){cnt++;//记录有多少个因子,后面好遍历}while (n % i == 0){a[cnt] = i;//a数组存因子g[cnt]++;//g数组存因子指数n = n / i;}}if (n > 1){a[++cnt] = n;g[cnt]++;}//考虑没分解完的情况

2,根据性质得出答案:

  for (int i = 1; i <= cnt; i++)//遍历如果有奇数就让原来的n*ans*这个奇数质因子也就是让ans*这个奇数质因子{if (g[i] % 2){ans = ans * a[i];}}cout << ans;

小插曲:

质因数分解写错了最后输出了和n一样的数竟然得了60分!!

全部代码

#include <iostream>
using namespace std;long long n, ans = 1, g[1000], a[1000], cnt;
int main()
{cin >> n;// 首先对n进行质因数分解for (long long i = 2; i * i <= n; i++){if (n % i == 0){cnt++;//记录有多少个因子,后面好遍历}while (n % i == 0){a[cnt] = i;//a数组存因子g[cnt]++;//g数组存因子指数n = n / i;}}if (n > 1){a[++cnt] = n;g[cnt]++;}//考虑没分解完的情况//完全平方数的质因子的指数一定为偶数for (int i = 1; i <= cnt; i++)//遍历如果有奇数就让原来的n*ans*这个奇数质因子也就是让ans*这个奇数质因子{if (g[i] % 2){ans = ans * a[i];}}cout << ans;system("pause");return 0;
}

http://www.ppmy.cn/news/34625.html

相关文章

Nginx可视化管理工具 - Nginx Proxy Manager

一、介绍 nginx-proxy-manager 是一个反向代理管理系统,它基于Nginx,具有漂亮干净的 Web UI。还可以获得受信任的 SSL 证书,并通过单独的配置、自定义和入侵保护来管理多个代理。 其官网地址如下: https://nginxproxymanager.com/ 二、安装 第一步:192.168.1.108服务…

五.ElasticSearch的基础+实战

五.ElasticSearch的基础+实战 1.Elasticsearch的是什么? 2.Elasticsearch的作用是什么? 3.Elasticsearch的核心思想? 4.Elasticsearch启动与简单使用 5.kibana结合elasticsearch实现简单的增删改查 6.elasticsearch安装中文分词器 7.elasticsearch结合springboot开发…

STM32 ADC+定时器+DMA+FFT

本次实现的功能为单片机DAC输出一个正弦波&#xff0c;然后ADC定时采样用DMA输出&#xff0c;最后对DAC输出的波形进行FFT。单片机STM32F103ZET6内部时钟一、配置ADCADC端口为PA1&#xff0c;采用DMA输出&#xff0c;定时器3触发定时器时钟64M&#xff0c;分频后为102.4KHzADC采…

typescript(元组、枚举、类、泛型)

元组 数组合并了相同类型的对象&#xff0c;而元组&#xff08;Tuple&#xff09;合并了不同类型的对象 // 数组 let arr:number[] [1,2] // 元组 let arr1:[string,number][1,2] // 但是使用联合类型/类型别名 同样可以实现元组的效果 // 区别是元组对每一项进行类型约束 …

给程序加个进度条吧,1行Python代码,快速添加~

大家好&#xff0c;这里是程序员晚枫。 你在写代码的过程中&#xff0c;有没有遇到过以下问题&#xff1f; 已经写好的程序&#xff0c;想看看程序执行的进度&#xff1f; 在写代码批量处理文件的时候&#xff0c;如何显示现在处理到第几个文件了&#xff1f; &#x1f446…

字节跳动测试岗面试记:二面被按地上血虐,所幸Offer已到手...

在互联网做了几年之后&#xff0c;去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好&#xff0c;更重要的是&#xff0c;它是对你专业能力的背书&#xff0c;大厂工作背景多少会给你的简历增加几分竞争力。 但说实话&#xff0c;想进大厂还真没那么容易。最近面试字…

学习黑客十余年,如何成为一名高级的安全工程师?

1. 前言 说实话&#xff0c;一直到现在&#xff0c;我都认为绝大多数看我这篇文章的读者最后终究会放弃&#xff0c;原因很简单&#xff0c;自学终究是一种适合于极少数人的学习方法&#xff0c;而且非常非常慢&#xff0c;在这个过程中的变数过大&#xff0c;稍有不慎&#…

用源表测试软件如何输出I-V曲线、I-P曲线、恒定输出

IV曲线测试 是一种常用的电源表测试方法&#xff0c;它可以测量电源表的输出电压和电流之间的关系&#xff0c;以及电源表的负载特性。在测试测量实验中&#xff0c;可以借助NS-SourceMeter源表测试软件来测试I-V曲线、I-P曲线、恒定输出等。下面纳米软件Namisoft小编给大家分享…