[codevs2959]阶乘质因数分解

阶乘分解——质因数分解 https://ac.nowcoder.com/acm/contest/1021/B 大意:将N!分解成质因子相乘的形式。 思路: 先看两个数相乘得到的结果分解质因子的形式。,所有我们只要找到相同的质因子p,p在两者之间的分解质因子中的个数和就是相乘结果的p个个数。 扩展到n个数,对于某个质数p,找到[1,n]中p的倍数有多少个,也就是n/p个,还要找p^2的倍数有多少个,也就是n/(p^2)个,不乘2的原因是之前算p的倍数的时候已经算了。同理计算p^3.....,求个总和就是p的个数了。 #in 阅读详情

题目描述 Description
n!(n≤10000)是一个很大的数,对n!进行质因数分解后形式为:2p1*3p2*…kpk,其中k为某个质数,pi为对应质数的方幂。

输入描述 Input Description
一个正整数n

输出描述 Output Description
仅一行,由若干个以空格隔开的正整数组成,表示n!的质因数分解形式,每个整数表达质数按从小到大的顺序排列后对应的方幂pi(意义见上)。
样例输入 Sample Input
15

样例输出 Sample Output
11 6 3 2 1 1

数据范围及提示 Data Size & Hint
(n≤10000)

#include<iostream>
#include<cstdio>
#include<algorithm>
#define LL long long
using namespace std;
const int MAXN = 200000 + 50;
int N;
int solve(int n,int m)
{
    int ans = 0;
    while(n)
    {
        ans += n/m;
        n /= m;
    }
    return ans;
}
bool sh[MAXN];
int prime[MAXN],tot,ans[MAXN];
void find(int n)
{
    for(int i = 2;i <= n;i ++)
    {
        if(!sh[i])prime[++ tot] = i;
        for(int j = 1;j <= tot,i * prime[j] <= N;j ++)
        {
            sh[i * prime[j]] = true;
            if(i % prime[j] == 0)break;
        }
    }
}
bool cmp(int a,int b)
{
    return a > b;
}
int main()
{
    scanf("%d",&N);
    find(N);
    for(int i = 1;i <= tot;i ++)
    {
        ans[i] = solve(N,prime[i]);
    }
    //sort(ans + 1,ans + tot + 1,cmp);
    for(int i = 1;i <= tot;i ++)printf("%d ",ans[i]);
    return 0;
}

   
对于solve中的代码

n! = 1× 2 × 3 × 4 × … × (n - 2) × (n - 1) × n,若求2的个数,可将n!分
解为

[2 × 4 × 8 ×… × ((n/2) *2)] × 其它 == [2^(n/2) × (n/2)!] × 其它

对答案贡献为n/2,再处理(n/2)!的部分,直到为0

所得答案即2在n!中出现次数

阶乘分解【分解质因数】 描述 给定整数 N(1≤N≤10^6),试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 p_i 和 c_i 即可。 输入格式 一个整数N。 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ci,表示含有pi^ci项。按照pi从小到大的顺序输出。 样例输入 5 样例输出 2 3 3 1 5 1 样例解释 5! = 120 = 2^3 * 3... 阅读详情

相关推荐

197.阶乘分解(分解质因数)

分析: 如果直接采取普通的分解质因数的方法,那么由于有n个数相乘,普通分解质因数的时间复杂度是O(sqrt(n)),总的时间复杂度是O(Nsqrt(n)) 会超时 思考有没有其他办法可以筛选质因数呢?逆向思维一下,可以从质因数的角度出发,看看n!里面还有多少个这个数 规律: 我们发现,对于1~n来说,假设质因数是p 1~n中只是p的倍数,拥有1个p 1~n中是p^2的倍数,拥有2个p ... 那么,从质因数的角度出发,我们只需要找出1~n中有多少个p的倍数就可以了,可想而知是[n/p](下..

qq12323qweeqwe的博客 922

第3题 分解质因数

请你把一个数分解质因数。

A123456791011的博客 341

n的阶乘的质因子数量(三种算法思路)

思路一: O(nlogn)算法: 这个是最简单但最笨的一个思路: n!=1* 2 * 3 * 4 * 5 … *n 就是遍历一下2~n之间的因子能否被质因子p整除然后用一个while循环进行除运算,并计数,直到因子不能被整除为止。 for+while结合遍历代码如下: #include<bits/stdc++.h> using namespace std; //计算n!中有多少个质因子...

SOAR 4275

Java笔试题:对N!分解质因数

Java笔试题:对N!分解质因数 对N!分解质因数 例如输入10 则N=10 分解质因数 输出为 2 8 3 4 5 2 7 1 即 10!=(28)*(34)*(5^2)*7 import java.util.HashMap; import java.util.Map; import java.util.Scanner; //对N!分解质因数 例如输入10 则N=10 分解质因数 输...

u012507960的博客 879

阶乘分解(素数筛选法&&分解质因子)

给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的pi和ci即可。 输入格式 一个整数N。 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi,ci,表示含有pici项。按照pi从小到大的顺序输出。 数据范围 1≤N≤106 输入样例: 5 输出样例: 2 3 3 1 5 1 样例解释 5!=120=23∗3∗5 思路...

Mr_Kingk的博客 1028

NYOJ - 56:阶乘因式分解(一)

NYOJ - 56:阶乘因式分解(一) 标签:算法、数论 参考资料:http://blog.youkuaiyun.com/wingrez/article/details/78054722(质因数分解式) 题目 给定两个数n,m,其中m是一个素数。将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。 输入 第一行是一个整数s(0输出 输出m的个数。 输入样例 2 10

WINGREZ‘S BLOG 770

【递归】分解质因子

【递归】分解质因子 【问题描述】输入一个正整数n,用递归方法从小到大输出它的所有质因子(因子是质数) 【输入形式】一行,一个正整数n,2<=n<=10000 【输出形式】一行,若干个正整数,两数之间用一个空格隔开,从小到大输出 【样例输入】 18 【样例输出】 2 3 3 代码如下: #include"iostream" #include"iomanip" #include"cmath" using namespace std; bool judge_prinme(int n)//判断质数

chn-zgq's Blog 1771

车联网ECU、TSP与TBOX通信流程

对比维度ECU(电子控制单元)BMS(电池管理系统)应用场景传统燃油车 + 新能源汽车仅限新能源汽车核心作用控制整车各系统运行管理动力电池安全与寿命车联网角色数据采集与传输的核心载体提供电池相关的核心数据。

tecoes的博客 1232

阶乘的分解质因数

首先说一下分解质因数: 唯一分解定理:任何一个数都可以唯一分解为几个质数的幂次乘积。 const int maxn = 1e6+5; int p[maxn], c[maxn]; int cnt = 0; void divided(int n){ for(int i = 2; i * i <= n; i++){ if(n % i == 0){ p[++cnt] = i; c...

qq_41818544的博客 1716

集群路径规划实战(一)之EGO-swarm环境搭建与调试

本文详细介绍了EGO-swarm分布式无人机集群运动规划系统的仿真环境搭建与调试全流程。内容涵盖ROS Melodic安装、代码获取、依赖库配置、编译问题解决(如multi_map_server头文件缺失)以及最终通过roslaunch启动集群仿真与Rviz可视化,为学习和研究集群路径规划算法提供了可运行的实战平台。

weixin_29243279的博客 250

Retinanet训练自己的数据(2):模型准备

  在上一篇博客中,我们已经处理好了模型需要的数据集,下一步就是准备模型去训练数据。这里提醒一句,在制作数据时,最好将训练集和测试集人为分开。像Google tensorflow API,在制作数据时可以按比例自动生成,但是在上一篇文章中产生的数据(annotation.csv )其实都是用来训练的,如果你把自己的数据集全都转换了,那么恭喜你,最后你会发现没有数据集去测试了。   下面开始模型准...

mingyang_wang的博客 5884

阶乘分解——质因数分解+组合数的计算

n!n!n!

m0_74993985的博客 1122

【实战指南】利用CAN适配器高效调试CAN总线通信

本文提供了一份利用CAN适配器高效调试CAN总线通信的实战指南。文章从硬件连接、终端电阻配置、软件参数设置等基础环节入手,详细解析了CAN适配器作为关键调试工具的工作原理与使用方法,并针对常见的通信故障提供了系统化的问题排查思路,帮助工程师快速打通通信链路,提升调试效率。

weixin_28285943的博客 412

【C语言】对N!进行质因子分解

输入数据仅有一行包含一个整数N,N

m0_66304425的博客 1808

深度学习优化算法解析(Momentum, RMSProp, Adam)

之前看了很多人介绍网络的优化器optimizer,无奈很多都把简单的东西讲的复杂化了,不容易让人懂,恰好之前看过吴恩达老师的最新的课程,这里结合老师讲的和个人想法写一下,方便别人同时也为自己以后回顾吧。 深度学习的优化算法主要有GD,SGD,Momentum,RMSProp和Adam算法吧,还有诸如Adagrad算法,不过大同小异,理解了前面几个,后面的也就引刃而解了。GD算法,SGD算法以及m

willduan的博客 12万+

国产PLC实战:用汇川Easy320搞定TCP通信,手把手教你网口转串口控制设备

本文详细解析了如何使用汇川Easy320 PLC实现TCP通信与串口控制,解决工业自动化中设备间通信协议差异问题。通过实战案例和代码示例,展示了Easy320在协议转换、数据解析和串口转发中的高效应用,帮助工程师快速掌握网口转串口控制技术。

weixin_31774841的博客 500

PTA练习

输入一个整数n(2≤n≤10000),对其分解质因数。 输入格式: 输入正整数n(2≤n≤10000)。 输出格式: 输出整数=各分解质因数的乘积 输入样例: 120 输出样例: 120=22235 #include<stdio.h> int main(){ int n,i; scanf("%d",&n); printf("%d=",n); for(i=2;i<=...

qq_45015119的博客 1664

PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1928

快速求n!的质因数分解【阶乘分解】

快速求n!的质因数分解 首先将素数打表存下来。 然后对于每一个小于nnn的素数判断在n!n!n!中出现了几次。 然后就是如何进行第二步: 我们知道n!n!n!中每个小于n的质数一定会出现在n!n!n!中,所以这是一个连续的质数分解,以至于我们可以直接从最小的质数遍历到小于nnn的最大质数(都会出现)。 对于一个质数如何判断它在n!n!n!中出现的次数呢? 公式对于质数x:cnt[x]=⌊nx1⌋+⌊nx2⌋+⋯+(到x的次方大于n)cnt[x]=\lfloor\frac{n}{x^1}\rfloor+

qq_45817631的博客 1520

国产数据库全解析:openGauss、OceanBase、TiDB与KingbaseES的核心优势与应用场景指南

本文将深入剖析openGauss、OceanBase、TiDB和KingbaseES这四款主流国产数据库的核心内容,并针对国产化过程中给出使用建议,以帮助企业根据自身需求选择合适的数据库解决方案。国产数据库在性能、扩展性、兼容性、安全性等方面展现出强大实力,能够满足不同行业、不同场景的需求。企业在进行国产化过程中,应充分考虑业务特点、技术栈、团队能力等因素,结合上述分析,选择最适合自身的国产数据库产品。随着国产数据库技术的持续发展与生态完善,它们将成为推动企业数字化转型、保障数据安全的重要力量。

java专栏 8779

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

分解 n!

给你一个数 n (1 < n <= 1000000) ,求 n! (n的阶乘)的质因数分解形式,质因数分解形式为 n=p1^m1*p2^m2*p3^m3…… * 这里 p1 < p2 < p3 < …… 为质数 * 如果 mi = 1, 则 ^ mi 就不需要输出 6=2^4*3^2*5 7=2^4*3^2*5*7    题意:给出n,将n!分解成质因子相乘的形式。 在这里如

qq_18343569的博客 957

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

质因子分解

题目描述 对N!进行质因子分解。 输入格式 输入数据仅有一行包含一个正整数N,N<=10000。 输出格式 输出数据包含若干行,每行两个正整数p,a,中间用一个空格隔开。表示N!包含a个质因子p,要求按p的值从小到大输出。 输入样例 10 输出样例 2 8 3 4 5 2 7 1 #include<iostream> using namespace std; int a[10001]; int main() { int N,k,count=0; cin>>N; for

weixin_54418006的博客 475

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NYOJ56阶乘因式分解(一)

给定两个数m,n,其中m是一个素数。 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。 输入第一行是一个整数s(0<s<=100),表示测试数据的组数随后的s行, 每行有两个整数n,m。输出输出m的个数。样例输入 2 100 5 16 2 样例输出 24 15 View Code #include<...

dianpuding9411的博客 342

如何分解n!的质因数

给出n,分解n!的质因数。

rc_Wechis的博客 322

线性筛(分解阶乘质因子) - 阶乘分解 - AcWing 197

线性筛 - 阶乘分解 - AcWing 197 给定整数N,试把阶乘N!分解质因数,按照算术基本定理的形式输出分解结果中的pi和ci即可。给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 p_i 和 c_i 即可。给定整数N,试把阶乘N!分解质因数,按照算术基本定理的形式输出分解结果中的pi​和ci​即可。 输入格式 一个整数N。 输出格式 N!分解质因数后的结果,共若干行,每行一对pi,ci,表示含有pici项。按照pi从小到大的顺序输出。N! 分解质因数后的结果,共若干

njuptACMcxk的博客 387

分解质因数——AcWing 197. 阶乘分解

质因数分解是将一个大于1的整数写成一些质数的乘积的过程。每个合数(即非质数的整数)都有唯一的一种质因数分解方式,不计因子的顺序。

u014114223的博客 1561
上一篇: [codevs2597]团伙
下一篇: [codevs1154]能量项链
LOI_pingxing
博客等级 码龄10年 24粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值