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

2024-03-09 23:44
文章标签 蓝桥 完全 2021 平方 ab2

本文主要是介绍[蓝桥杯 2021 省 AB2] 完全平方数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、题目描述

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

二、问题简析

2.1 唯一分解定理

唯一分解定理:大于1的自然数都可以唯一地写成素数的积

由该定理,一个大于 1 1 1 的自然数 b b b 可以表示为 b = a 1 p 1 ∗ a 2 p 2 ∗ . . . ∗ a n p n b=a_1^{p_1}*a_2^{p_2}*...*a_n^{p_n} b=a1p1a2p2...anpn ( a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1,a2,...,an素数 p 1 , p 2 , . . . , p n p_1, p_2, ..., p_n p1,p2,...,pn 为对应的指数,即有 p n p_n pn 个该数)。该自然数 b b b 的平方为 b 2 = a 1 2 p 1 ∗ a 2 2 p 2 ∗ . . . ∗ a n 2 p n b^2 = a_1^{2p_1}*a_2^{2p_2}*...*a_n^{2p_n} b2=a12p1a22p2...an2pn,所有的指数都是偶数
我们可以得到,若一个自然数是完全平方数,则将该自然数写出素数的积后,每个素数的指数一定是偶数。

因此,我们可以分解 n n n,将指数不为偶数的素数相乘,就得到了 x x x

2.2 分解自然数

以下代码给出了如何将大于 1 1 1 的自然数分解为素数的积。

// 将整数n分解成若干个素数,除1和本身
map<int, int> factors(int n)
{map<int, int> ans;      // 分解n后,有ans[i]个i// n==1,特殊考虑if (n == 1){ans[n] = 1;return ans;}// 1和本身总是因数,这里忽略for (int i = 2; i * i <= n; i++){// 可能有若干个iwhile (n % i == 0){ans[i]++;       // 分解出一个in /= i;}}if (n != 1)             // n==1,已经分解完了ans[n] += 1;return ans;
}

三、AC代码

#include <bits/stdc++.h>using namespace std;
typedef long long ll;int quickin(void)
{int ret = 0;bool flag = false;char ch = getchar();while (ch < '0' || ch > '9'){if (ch == '-')    flag = true;ch = getchar();}while (ch >= '0' && ch <= '9' && ch != EOF){ret = ret * 10 + ch - '0';ch = getchar();}if (flag)    ret = -ret;return ret;
}int main()
{#ifdef LOCALfreopen("test.in", "r", stdin);#endifll n, ans = 1;cin >> n;if (n == 1){cout << 4 << endl;return 0;	}for (ll i = 2; i * i <= n; i++){ll cnt = 0;while (n % i == 0){cnt += 1;n /= i;	}if (cnt % 2 != 0)    ans *= i;}if (n != 1)    ans *= n;cout << ans << endl;return 0;
}

这篇关于[蓝桥杯 2021 省 AB2] 完全平方数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/792321

相关文章

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

HDU 2159 二维完全背包

FATE 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写