当前位置: 首页 > news >正文

acwing1295. X的因子链

题目链接:1295. X的因子链 - AcWing题库

算法:数论+线性筛法求素数

x如果想要尽可能多的分为几个因子,那么就应该分成素数,因为如果是合数说明还能分。

题目要求求出①这段序列的最大长度和②最大长度序列的个数

 最大长度:

从当前数按照最小的质因数开始分解,如果大于一每次 /= 最小质因数,这样就可以得到最长的序列。

最大长度序列的个数:

假设最大长度为tot,那么假设tot个数内各不相同,全排列的组合数为 tot !

但是内部其实有很多相同的数,我们要做的就是统计每个数出现的次数

所以刚好可以使用sum []来记录

因为在全排列中,这n个相同的数的排列数其实是等价的,所以只要 / n!

本题代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>

using namespace std;
typedef long long LL;

const int N = (1 << 20) + 10;

int cnt, primes[N];//cnt用来记录素数的下标 
bool st[N];//用来标记合数 
int minp[N];//最小质因数 

void get_primes(int n)
{
	for(int i = 2;i <= n;i ++ )//从2开始找数 
	{
		if(!st[i])//如果这个数没有被筛出去过,说明是一个质数 
		{
			primes[cnt ++ ] = i;
			minp[i] = i;//质数的最小质因数是自己本身 
		}
		for(int j = 0;primes[j] * i <= n;j ++ )//primes从小到大开始枚举 
		{
			int t = primes[j] * i;
			st[t] = true;//如果一个数能表示为两个数的积说明是合数 
			minp[t] = primes[j];//最小质因数是primes[j],因为从小到大开始枚举的质数 
			if(i % primes[j] == 0) break;//最关键的一步,确保只会筛一次 
		}
	}
}

int main()
{
	int x;
	
	get_primes(N - 1);
	int sum[N];
	while(scanf("%d", &x) != -1)
	{
		int k = 0, tot = 0;
		while(x > 1)
		{
			int p = minp[x];
			sum[k] = 0;
			while(x % p == 0)
			{
				x /= p;
				sum[k] ++;
				tot ++;
			}
			k ++;
		}
		
		LL res = 1;
		for(int i = 1;i <= tot;i ++ ) res *= i;
		 
		for(int i = 0;i < k;i ++ )
			for(int j = 1;j <= sum[i];j ++ ) res /= j;
			
			printf("%d %lld\n", tot, res);
	}
	
	return 0;
}

相关文章:

  • Kubernetes - Pod控制器 - Deployment - 金丝雀部署
  • OpenHarmony 入门——ArkUI 跨页面数据同步和页面级UI状态存储LocalStorage小结(二)
  • java使用Apache POI 操作word文档
  • leetcode684.冗余连接
  • 021-TCMalloc
  • embeddings
  • 查看visual studio的MSVC版本的方法
  • 论华为 Pura X 折叠屏性能检测
  • 使用 OpenCV 拼接进行图像处理对比:以形态学操作为例
  • 【Linux网络-NAT、代理服务、内网穿透】
  • 国产开发板—米尔全志T113-i如何实现ARM+RISC-V+DSP协同计算?
  • 深入理解 JavaScript/TypeScript 中的假值(Falsy Values)与逻辑判断 ✨
  • e2studio开发RA4L1(15)----配置RTC时钟及显示时间
  • 阿里云搭建docker私有仓库
  • Ninja编译入门指南:极速构建工具的核心用法与实践
  • NAT 实验:多私网环境下 NAPT、Easy IP 配置及 FTP 服务公网映射
  • 大模型训练的调参与算力调度技术分析
  • 七桥问题与一笔画问题:图论的奠基石
  • 数据库的设计规范:第一范式、第二范式、第三范式
  • 人脸表情识别系统分享(基于深度学习+OpenCV+PyQt5)
  • 奥运“四朝元老”华天回国参赛,伤势未愈谨慎出战全国锦标赛
  • 上海虹桥国际咖啡文化节周五开幕,来看Coffeewalk通关攻略
  • 市场监管总局召开平台企业支持个体工商户发展座谈会
  • 跨文化戏剧的拓荒者与传承者——洪深与复旦剧社的百年回响
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • 迪奥部分客户数据遭泄露,公司称正持续展开调查