1 月 30 日算法练习-数论

唯一分解定理

唯一分解定理指的是:对于任意一个>1的正整数,都可以以唯一的一种方式分解为若干质因数的乘积。
x = p 1 k 1 ⋅ p 2 k 2 ⋅ … ⋅ p m k m x = p_1^{k_1} \cdot p_2^{k_2} \cdot \ldots \cdot p_m^{k_m} x=p1k1p2k2pmkm
这个式子中的p1,p2是类似2,3,5,7这样的质数。
将单个数字进行质因数方法是,从小到大枚举x的所有可能的质因子,最大枚举到sqrt(x),每遇到一个可以整除的数字i,就不断进行除法直到除尽。最后如果还有x>1,说明还有一个较大的质因子。

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 9;
vector<pair<int, int>> v;int main() {int x;cin >> x;// Enumerate all possible prime factorsfor (int i = 2; i <= x / i; ++i) {// If it doesn't divide, skipif (x % i) continue;// If it divides, it must be a prime factor (due to the nature of enumeration from small to large)// Count represents the exponent of the current prime factor (i)int cnt = 0;// Keep dividing until it is no longer divisiblewhile (x % i == 0) {cnt++;x /= i;}v.push_back({i, cnt});}// If x is greater than 1, it means x itself is a prime factorif (x > 1) {v.push_back({x, 1});}// Print the prime factors and their exponentsfor (const auto &i : v) {cout << i.first << ' ' << i.second << '\n';}return 0;
}

约数个数定理

通过某个数字的唯一分解: x = p 1 k 1 ⋅ p 2 k 2 ⋅ … ⋅ p m k m x = p_1^{k_1} \cdot p_2^{k_2} \cdot \ldots \cdot p_m^{k_m} x=p1k1p2k2pmkm
我们可以求出x的约数(因数)个数,如果学过线性代数或者有向量相关的知识的话,可以理解为将不同的质因子看作是不同的向量空间或基底,不同质因子之间互不干扰。
也就是说p1的指数的取值是[0,k1]共(k1+1)个,p2,p3…亦然,所以x的约数的个数就是 (k1+1)*(k2+1)*…*(km+1),即: d ( x ) = ∏ i = 1 m ( k i + 1 ) d(x) = \prod_{i=1}^{m}(k_i + 1) d(x)=i=1m(ki+1)

阶乘约数在这里插入图片描述

思路:100!阶乘太大,不能直接求出再求正约数。可以用唯一分解定理和约数个数定理来求约数个数。

#include<iostream>
using namespace std;
const int N = 1e2 + 5;
int a[N];void f(int x){for(int i=2;i<=x/i;i++){if(x%i)continue;int cnt = 0;while(x%i==0){cnt++;x/=i;}a[i]+=cnt;}if(x>1)a[x]++;
}int main(){for(int i = 1;i<=100;i++)f(i);long long ans =1;for(int i=1;i<=100;i++)ans*=(a[i]+1);cout<<ans<<'\n';return 0;
}

在这里插入图片描述

求值

在这里插入图片描述

#include<iostream>
using namespace std;int check(int x) {int cnt = 0;for(int i=1;i*i<=x;i++){if(x%i==0){if(i==x/i)cnt++;else cnt+=2;}}return cnt == 100;
}int main() {for(int i=1; ;i++){if(check(i)){cout<<i<<'\n';break;}}return 0;
}

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

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

相关文章

数据分析之数据预处理、分析建模、可视化

数据分析的过程通常包括数据预处理、分析建模和可视化三个主要阶段。以下是每个阶段的简要说明&#xff1a; 数据预处理&#xff1a; 数据预处理是数据分析过程中的一个重要步骤&#xff0c;它涉及到对原始数据进行清洗、整理、转化等操作&#xff0c;以便更好地进行后续的分析…

Guava cache中 LoadingCache和Cache的区别

在 Guava 缓存库中&#xff0c;LoadingCache 和 Cache 是两个不同的接口&#xff0c;它们在功能和使用方式上有一些区别。 LoadingCache&#xff1a; LoadingCache 是 Cache 接口的子接口&#xff0c;继承了 Cache 的所有方法&#xff0c;并添加了一些额外的方法。LoadingCache…

Kubernetes集群搭建

一、概述 Kubernetes是一个Google开源的全新的分布式容器集群管理系统&#xff0c;由于从第一个字母到字母s中间有8个字母&#xff0c;所以简称K8s。 二、准备 ip角色内存192.168.187.130master4G192.168.187.131node2G192.168.187.132node2G 小提示&#xff1a; 设置静态i…

前端使用vue-simple-uploader进行分片上传

目录 一、安装vue-simple-uploader 二、在vue中使用 一、安装vue-simple-uploader npm install vue-simple-uploader --save main.js初始化vue-simple-uploader import uploader from vue-simple-uploaderVue.use(uploader) common/config文件 export const ACCEPT_CONF…

信号传输中串扰的影响.

1.导线间的串扰 当导线之间发生串扰时,一根导线上的信号会影响到另一根信号线,给连接的电路造成干扰。这种现象通常发生在平行的导线之间。在设计设备的布线时,特别要注意低电平模拟信号的传输问题。附近导线对其的串扰常常是系统性能下降的主要原因。因此在布线设计时,必须…

docker容器代理上网问题解决参考

背景&#xff1a;折腾一个项目&#xff0c;奈何很多依赖来自外部服务器。 一、网上冲浪做法 1、修改docker配置文件 2、根据docker官方教程设置代理配置 3、设置端口映射 4、加载镜像时&#xff0c;设置网络只能走本地 奈何都没有解决容器内部代理上网问题 二、个人做法…

seq2seq编码器-解码器实现

我们在之前的文章快速上手LSTM-CSDN博客中提及了RNN的几种不同的类型&#xff0c;其中有同步的 many to many 的根据视频的每一帧对视频分类任务&#xff0c;以及异步的 many to many 文本翻译。对于这种输入和输出不等长的序列&#xff0c;我们采用seq2seq&#xff08;sequenc…

一步步成为React全栈大师:从环境搭建到应用部署

文章目录 第一步&#xff1a;环境搭建第二步&#xff1a;了解React基础第三步&#xff1a;组件与路由第四步&#xff1a;状态管理第五步&#xff1a;接口与数据交互第六步&#xff1a;样式与布局第七步&#xff1a;测试第八步&#xff1a;构建与部署《深入浅出React开发指南》内…

【面试官问】Redis 持久化

目录 【面试官问】Redis 持久化 Redis 持久化的方式RDB(Redis DataBase)AOF(Append Only File)混合持久化:RDB + AOF 混合方式的持久化持久化最佳方式控制持久化开关主从部署使用混合持久化使用配置更高的机器参考文章所属专区

React 面试题

1、组件通信的方式 父组件传子组件&#xff1a;通过props 的方式 子组件传父组件&#xff1a;父组件将自身函数传入&#xff0c;子组件调用该函数&#xff0c;父组件在函数中拿到子组件传递的数据 兄弟组件通信&#xff1a;找到共同的父节点&#xff0c;用父节点转发进行通信 …

一键转换MOV至MP3:轻松删除原视频,释放存储空间!

你是否曾经有一个MOV格式的视频文件&#xff0c;想要提取其中的音频却苦于没有合适的工具&#xff1f;现在&#xff0c;有了我们的全新视频剪辑工具&#xff0c;这个烦恼全部消失&#xff01;我们为你提供一键式解决方案&#xff0c;将MOV视频文件快速转换为MP3音频格式。 首先…

基于单片机的造纸纸浆液位控制系统结构设计

摘要:为适应无人化与高效化制浆造纸生产体系&#xff0c;造纸企业趋于以嵌入式技术优化造纸过 程中的纸浆液位控制系统&#xff0c;以单片机与传感器相互耦合实现纸浆液位控制。本文基于单片机 设计了造纸纸浆液位控制系统&#xff0c;其结构由控制模块、信息采集模块、物联网模…

备战蓝桥杯---搜索(应用入门)

话不多说&#xff0c;直接看题&#xff1a; 显然&#xff0c;我们可以用BFS&#xff0c;其中&#xff0c;对于判重操作&#xff0c;我们可以把这矩阵化成字符串的形式再用map去存&#xff0c;用a数组去重现字符串&#xff08;相当于map映射的反向操作&#xff09;。移动空格先找…

JVM之Java内存区域

JVM-Java内存区域 Java内存区域是Java虚拟机&#xff08;JVM&#xff09;管理的内存资源的逻辑划分&#xff0c;用于存储程序运行时所需的数据。Java内存区域的合理划分和管理对于程序的性能和稳定性具有重要影响。本文将深入探讨Java内存区域的各个部分&#xff0c;包括方法区…

(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2节( 参数和返回值)

4.2 参数和返回值 ​ 调用函数或过程时&#xff0c;需要传递正确数量的参数&#xff0c;并确保它们符合预期类型。否则&#xff0c;编译器会发出错误信息&#xff0c;就像给变量赋值时类型不匹配一样。前面的 DoubleIt 函数定义了一个 整数参数&#xff0c;如果调用&#xff1…

vit细粒度图像分类(九)RAMS-Trans学习笔记

1.摘要 在细粒度图像识别(FGIR)中&#xff0c;区域注意力的定位和放大是一个重要因素&#xff0c;基于卷积神经网络(cnn)的方法对此进行了大量探索。近年来发展起来的视觉变压器(ViT)在计算机视觉任务中取得了可喜的成果。与cnn相比&#xff0c;图像序列化是一种全新的方式。然…

npm ERR! code CERT_HAS_EXPIRED

执行npm i报错&#xff1a; npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/react-redux failed, reason: connect ETIMEDOUT 104.16.2.35:443 npm ERR! network This is a problem rel…

机器学习算法之支持向量机(SVM)

支持向量机(Support Vector Machine,简称SVM)是一种广泛用于分类、回归和其他学习任务的强大的监督学习算法。SVM的目标是找到一个超平面,以最大化地分隔不同类别的数据点。在二维空间中,这个超平面可以被看作是一条直线,但在更高维度的空间中,它可能是一个平面或者更复…

Android PMS——网络下载应用安装(六)

我们接着上一篇文章继续分析,文章最后调用到了 PackageManagerService 中的 installStage() 方法,这里就是正式开始 APK 的安装过程。 一、安装流程 1、PackageManagerService 源码位置:/frameworks/base/services/core/java/com/android/server/pm/PackageManagerServic…

使用ESP32-S3对MQ-135空气质量传感器的使用记录(Arduino版)

一、硬件上&#xff1a; 1、使用esp32开发板的04引脚与AO连接&#xff0c;检测AO引脚的电平 二、软件上&#xff1a; 1、使用Arduino快速完成开发 2、源码&#xff1a; // Potentiometer is connected to GPIO 04 (Analog ADC1_CH3) const int adcPin 4;// variable for s…