约 数个数

news2024/11/15 13:56:35

对于一个数 x

x = {p_1}^{\alpha_1} * {p_2}^{\alpha_2} * {p_3}^{\alpha_3}*...*{p_k}^{\alpha_k}

其中:p_nx的各个质因数,上式是x的质因数乘积式。 

约数个数:(\alpha_1+1)*(\alpha_2+1)*(\alpha_3+1)*...*(\alpha_k+1)

约数之和:({p_1}^0+{p_1}^1+...+{p_1}^{\alpha_1})*({p_2}^0+{p_2}^1+...+{p_2}^{\alpha_2})*...*({p_k}^0+...+{p_k}^{\alpha_k}) 

step1:

采用分解质因数的方法,计算出x的每一个质因数p_n的次数\alpha_n

(分解质因数的blog:http://t.csdnimg.cn/HppLT)

step2:

遍历记录质因数和质因数次数的unordered_map容器primes,套用公式,得到结果 

题目如下:

给定 n 个正整数 ai,请你输出这些数的乘积的约数个数,答案对 109+7 取模。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个整数 ai。

输出格式

输出一个整数,表示所给正整数的乘积的约数个数,答案需对 109+7 取模。

数据范围

1≤n≤100
1≤ai≤2×109

解答代码如下:

#include<iostream>
#include<cstring>
#include<unordered_map>

using namespace std;

const int N = 110;

int n;
int mod = 1e9 + 7;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    cin >> n;
    
    unordered_map<int ,int >primes;
    
    while(n--)
    {
        int x;
        cin >> x;
        
        for (int i = 2;i<=x/i;++i)
        {
            while(x % i == 0)
            {
                x = x/i;
                primes[i]++;
            }
        }
        if (x > 1)
        primes[x]++;
    }
    long long  res = 1;
    for (auto i = primes.begin();i != primes.end();++i)
    {
        res = res*((*i).second + 1) % mod;
    }
    cout << res % mod;
    return 0;
}

(1)公式推导

 

(2)本题数据的处理

本题要求中:不是要求单个数的约数个数,而是要求输出多个数乘积的约数个数

我们所采用的方法是对每一个输入的数都进行分解质因数操作,记录每个质因数的次数,最后

primes容器中的记录的各个质因数的次数就是输入的数的乘积的质因数次数,然后套用公式,

得到结果

这样的方法,与先求出所有输入的数的乘积,然后再对这个乘积使用分解质因数,接着套用公式的方法没有区别。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kali学习(ms17-010、ms08-067漏洞复现)

目录 一、kali网络设置 NAT模式、桥接上网/仅主机 VMnet0、VMnet1、VMnet8 1.NAT模式 VMnet8 &#xff08;1&#xff09;检查服务 &#xff08;2&#xff09;创建虚拟网卡 &#xff08;3&#xff09;创建kali的网卡信息 &#xff08;4&#xff09;验证 2.桥接模式 VMn…

结果一。5.be doing表将来和 表 will的区别

be doing 表⽰近期、眼下就要发⽣的事情; will 表⽰将来的时间,则较远⼀些。如: He is going to write a letter tonight.He will write a book 。 be going to 表⽰根据主观判断将来肯定发⽣的事情。 will+ 动词原形表⽰⼀般将来时。 will ࿰

如何用Java SpringBoot+Vue打造高效产品订单管理系统?

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

【C++ Primer Plus习题】6.9

问题: 解答: #include <iostream> #include <string> #include <fstream> using namespace std;typedef struct _Donor {string name;double money; }Donor;int main() {ifstream file;string filename;int count 0;cout << "请输入文件名:&quo…

PDF合并可以如此简单?!这3种方法,简单又实用!

在日常的忙碌与学习中&#xff0c;我们时常需要将散落的PDF文件整合成一份完整的文档&#xff0c;无论是为了整理报告、汇编学习资料&#xff0c;还是为了提升阅读效率&#xff0c;PDF合并都显得尤为重要。 今天&#xff0c;就让我带你解锁三种既简单又高效的PDF合并方法&#…

进程终止 等待 替换

文章目录 一.进程的终止进程终止实在做什么&#xff1f;进程终止的3种情况自定义退出码 如何终止进程&#xff1f; 二.进程等待为什么要进行进程等待&#xff1f;进程如何等待&#xff1f;waitwaitpid 阻塞等待 && 非阻塞等待 三.进程的程序替换先看代码 && 现…

Windows电脑还在纠结用什么便签软件?

在快节奏的生活中&#xff0c;我们常常需要记录下一些重要的事情或者临时的想法&#xff0c;而便签软件就是我们的好帮手。但是&#xff0c;面对市面上众多的便签软件&#xff0c;Windows电脑用户可能会感到困惑&#xff0c;不知道该如何选择。在这里&#xff0c;小编为你提供一…

Great Wall长城工作站安装银河麒麟V10(SP1)-ARM版桌面操作系统

长城工作站安装银河麒麟V10(SP1)桌面操作系统 1. 硬件信息 [1]. Great Wall 长城台式微型计算机 产品型号&#xff1a;世恒TD120A2 型号代码&#xff1a;世恒TD120A2-019 电源&#xff1a;220V~3A 50Hz [2]. 芯片型号 架构&#xff1a; aarch64 CPU 运行模式&#xff1a…

【Qt窗口】—— 浮动窗口

目录 1.1 浮动窗口的创建 1.2 设置停靠的位置 1.3 示例小结 在Qt中&#xff0c;浮动窗口也称之为铆接部件&#xff0c;俗称为子窗口&#xff0c;浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口⼀般是位于核⼼部件的周围&#xff0c;可以有多个。 1.1 浮动窗口的…

LeetCode 热题100-39 对称二叉树

对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; 树中…

【python报错已解决】AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 当我们使用某些Python库&#xff0c;如Pillow&#xff08;PIL的一个分支&#xff09;&#xff0c;进行图像处理时&#x…

设备共享租赁小程序系统开发制作方案

设备共享租赁小程序系统让用户方便地租赁或出租各类设备&#xff0c;包括但不限于工具、电子产品、运动器材等&#xff0c;以满足临时使用需求&#xff0c;同时为设备所有者创造额外收益。 目标用户 个人用户&#xff1a;需要临时使用工具、车辆等设备的个人。 企业用户&#…

STM32(F103ZET6)第十九课:FreeRtos的移植和使用

目录 需求一、FreeRtos简介二、移植FreeRtos1.复制代码2.内存空间分配和内核相关接口3.FreeRtosConfig4.添加到工程中三、任务块操作1.任务四种状态2.创建任务过程 需求 1.将FreeRtos&#xff08;嵌入式实时操作系统&#xff09;移植到STM32中。 2.在该系统中实现任务的创建、…

git学习教程--分支操作+远程仓库相关过程详述

目录 1.分支 1.1查看已有分支 1.2新的分支的创建 1.3改变指针的指向 1.4合并分支 2.删除分支 3.合并冲突 3.1一个简单操作 3.2手动解决冲突 4.git分支管理策略 4.1fast-forward模式 4.2no-ff模式 4.3总结 5.bug修复建议 6.强制删除 7.分布式版本控制系统 7.1远…

【递归回溯之floodfill算法专题练习】

1. 图像渲染 class Solution {int dx[4] {0, 0, -1, 1};int dy[4] {1, -1, 0, 0};int m, n;int oldcolor; public:vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {oldcolor image[sr][sc]; // 保存原…

Java常用API(BigDecimal)

用于小数的精确计算 用来表示很大的小数 构造方法获取BigDecimal对象 public BigDecimal(double val) public BigDecimal(string val) 静态方法获取BigDecimal对象 public static BigDecimal value0f(double val) 1.通过传递double类型的小数来创建对象 这种方式有可能…

Linux|软件开发的基础概念|软件的源码本地编译和交叉编译概念

前言&#xff1a; 本文主要讲述软件的源码本地编译和交叉编译的基本概念&#xff0c;首先&#xff0c;是介绍什么是本地编译&#xff0c;什么是交叉编译&#xff0c;其次&#xff0c;本地编译和交叉编译到底是有什么用处&#xff0c;最后是交叉编译和本地编译的具体应用场景 …

边听边打?不再是难题,4款音频转文字神器推荐

无论是会议记录、课堂笔记还是采访录音&#xff0c;能快速准确地转录成文本&#xff0c;那可是大大提高了工作效率。市面上有几款工具在这方面做得不错&#xff0c;比如365在线转文字、布谷鸟配音、腾讯云语音识别和Speechnotes。今天就来个大比拼&#xff0c;看看它们各自的表…

人机交互的频率、时长、周期

人机交互的频率是指用户与系统互动的频繁程度&#xff1b;时长是每次互动的持续时间&#xff1b;周期是指在特定时间段内进行互动的规律或间隔。人机交互的频率、时长和周期通常与以下因素有关&#xff1a; &#xff08;1&#xff09;任务复杂性&#xff1a;复杂任务需要更多的…

docker部署clickhouse

1. 创建相关配置目录 mkdir -P /data/clickhouse/data mkdir -P /data/clickhouse/conf mkdir -P /data/clickhouse/log 2. 拉取镜像 # 下载最新版本clickhouse docker pull clickhouse/clickhouse-server # 下载指定版本clickhouse docker pull clickhouse/clickhouse…