组合数4 高精度计算组合数

news2025/2/22 7:48:26

 一般来说需要高精乘和高精除,但化简为质因子形式后只用高精乘。

一个阶乘n中因子p的个数:\frac{n}{p}+\frac{n}{p^{2}}+...

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
 
using namespace std;
 
typedef pair<int, int> PII;
typedef long long ll;
typedef long double ld;

const int N = 5010;

int num[N];
int primes[N], cnt;
bool st[N];

vector<int> mul(vector<int> &A, int b)
{
	vector<int> C;
	int t = 0;
	for(int i = 0; i < A.size(); i ++)
	{
		t += A[i] * b;
		C.push_back(t % 10);
		t /= 10;
	}
	while(t)
	{
		C.push_back(t % 10);
		t /= 10;
	}
	return C;
}

int get(int n, int p)//求阶乘n中因子p的个数 
{
	int res = 0;
	while(n)
	{
		res += n / p;
		n /= p;
	}
	return res;
}

void get_primes()
{
	for(int i = 2; i <= 5000; i ++)
	{
		if(!st[i])primes[cnt ++] = i;
		for(int j = 0; primes[j] * i <= 5000; j ++)
		{
			st[primes[j] * i] = true;
			if(i % primes[j] == 0)break;
		}
	}
}

int main()
{
	IOS
	int a, b;
	cin >> a >> b;
	get_primes();
	
	for(int i = 0; i < cnt; i ++)
	{
		int p = primes[i];
		num[i] = get(a, p) - get(b, p) - get(a - b, p);
	}
	
	vector<int> A;
	A.push_back(1);
	
	for(int i = 0; i < cnt; i ++)
		for(int j = 0; j < num[i]; j ++)
			A = mul(A, primes[i]);
			
	for(int i = A.size() - 1; i >= 0; i --)
	{
		cout << A[i];
	}
	
	return 0;
}

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

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

相关文章

开源一个基于的rt-thread系统的烟感采集系统

一、硬件 CPU&#xff1a;stm32f401 NBIOT模块&#xff1a;移远BC26 存储&#xff1a;W25Q128JVSIQTR 扩展&#xff1a;HC595输出&#xff0c;165输入 二、软件应用 FAL&#xff1a;分区 littlefs: 应用存储用的文件系统 EashFlash&#xff1a;日记存储、系统变量存储 kawaii_…

AP2400 DC-DC降压恒流驱动器 汽车摩托LED大灯电源驱动 全亮半亮瀑闪三功能循环

产品特点 宽输入电压范围&#xff1a;5V&#xff5e;100V 可设定电流范围&#xff1a;10mA&#xff5e;6000mA 固定工作频率&#xff1a;150KHZ 内置抖频电路&#xff0c;降低对其他设备的 EMI干扰 平均电流模式采样&#xff0c;恒流精度更高 0-100%占空比控制&#xff0…

邮件功能-python中的SMTP协议邮件发送

文章目录 一、SMTP协议邮件准备二、smtplib模块1.使用smtplib封装一个邮件类2.发送邮件 补充 一、SMTP协议邮件准备 需要一个smtp服务器 二、smtplib模块 smtplib模块是python自带的模块 1.使用smtplib封装一个邮件类 import smtplib import logging # 加入日志&#xff…

向着趋势奔跑:银行客户中心转型,重构商业模式是关键

随着金融市场化改革的推进 国内银行同业间的竞争日趋激烈 各商业银行在全新的监管要求和市场环境下 纷纷开始推行“以客户为中心”的经营新模式 迅速提升核心竞争力 然而&#xff01;&#xff01;&#xff01; 奇怪的事情发生了 &#x1f447; &#x1f447; &#x1f44…

DP读书:《openEuler操作系统》(三)操作系统的分类

操作系统的发展趋势 微内核库操作系统外内核多内核离散化内核openEuler操作系统简介 操作系统处于应用层与硬件层之间&#xff0c;上看应用、下看硬件。 应用层上&#xff0c;无人驾驶、工业驾驶等场景中&#xff0c;操作系统的可靠性被放在更重要的位置&#xff0c;微内核更受…

即刻报名!飞桨黑客马拉松第五期开启,创新挑战等你来!

新赛制&#xff0c;新玩法 飞桨黑客马拉松第五期 全新挑战&#xff0c;重磅回归&#xff01; 开源贡献个人挑战赛、大模型应用与创意赛、飞桨护航计划集训营 三大赛道&#xff0c;邀你挑战&#xff01; 多难度梯度开源任务、大模型应用创意挑战、导师1V1指导开发实践 硬核较量一…

SW - 清除零件实体表面上无用的凸起

文章目录 SW - 清除零件实体表面上无用的凸起概述笔记END SW - 清除零件实体表面上无用的凸起 概述 给顶部相机做了一个散射罩, 防止灯光太亮和不均匀. 3D打印的版本. 回来试验后, 要改进一下. 改进完了之后, 发现零件表面有多余的凸起, 看了好多资料, 没看到适用的方法. 如…

亮相“外滩金融峰会” 百望云实力入选“融城杯金融科技创新十佳案例”

近日&#xff0c;第五届“外滩金融峰会”在上海召开&#xff0c;百望云受邀出席峰会&#xff0c;与全球财经政要、机构高管与学界领袖齐聚外滩&#xff0c;分享真知灼见&#xff0c;以对话推动共识。 本届峰会由中国金融四十人论坛&#xff08;CF40&#xff09;与中国国际经济交…

微信加人不频繁的技巧,快码住

微信加人不频繁有哪些技巧&#xff1f; 1、尽量通过手机联系人进行添加 如果对方是你的手机联系人&#xff0c;添加好友可以更方便。不需要像常规方法搜索手机号或者微信号&#xff0c;直接通过手机联系人添加即可。这种方式系统不会认为你频繁加好友。 2、定时定量地去添加好…

线性表(1)

线性表即“把所有数据按照顺序&#xff08;线性&#xff09;的存储结构方式&#xff0c;存储在物理空间”。 线性表又分为 顺序表链表 单向链表双向链表 一、顺序表 数据依次存储在连续的物理空间中&#xff0c;就比如数组。 顺序表存储数据时&#xff0c;会提前申请一整块足够…

centos7忘记root密码重置办法~超简单

此重置linuxroot密码的教程是在centos linux环境中进行的&#xff01;不同版本的linux重置密码的方法是有一定的差的&#xff01; 一. 在下面的页面按“ e ” 编辑内核信息 二. 删除 “ rhgb quiet ” 三. 添加“ rd.break enforcing0 ” ,然后按 Ctrl X进入交互页面 四…

参与抖音官方活动:开启抖音小店的曝光与销售新机会

抖音官方活动是指由抖音平台官方组织或合作举办的各类促销活动、品牌推广活动等。参与抖音官方活动对于抖音小店来说&#xff0c;是一个重要的机会&#xff0c;可以帮助店铺获得更多的曝光和销售机会。下面四川不若与众将介绍抖音小店如何参与抖音官方活动的一般步骤和注意事项…

【LeetCode热题100】--234.回文链表

234.回文链表 快慢指针&#xff1a; 将链表的后半部分反转&#xff08;改变链表结构&#xff09;&#xff0c;然后将前半部分和后半部分进行比较。比较完成后我们应该将链表恢复原样。虽然不需要恢复也能通过测试用例 使用快慢指针在一次遍历中找到链表的中间位置&#xff1a…

【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

003:如何画出成交量的柱状图

接着《002&#xff1a;如何画出收盘价的曲线图》&#xff0c;继续画成交量柱状图。 import pandas as pd import matplotlib.pyplot as plt# 读取CSV文件&#xff0c;指定逗号作为分隔符 data pd.read_csv(002885.csv, sep,)# 提取成交量和日期数据 volume data[成交量] dat…

tailwind使用教程以及tailwind不生效的问题

以Vite项目为例 我们先安装依赖文件 生成文件 yarn add -D tailwindcss postcss autoprefixer npx tailwindcss init -p配置tailwind.config.js文件 /** type {import(tailwindcss).Config} */ export default {content: ["./index.html","./src/**/*.{vue,j…

基于MWORKS.Sysplorer的油气混合作动筒建模与仿真应用

作为常见的线性传动装置&#xff0c;液压作动筒因其高功率密度和传动平稳、可控性好等特点而被广泛应用于各领域。常规的液压作动筒以油液为介质传递动力&#xff0c;其原理结构如图1所示。液压油从无杆腔进入&#xff0c;推动作动筒活塞伸出&#xff1b;或从有杆腔流入&#x…

递归的总结和案例

①使用递归的方法获取1-100的总和 function sum(num){ if(num 1){ return num 1 }else { return numsum(num-1) } } let num 100 let numSum sum(num) console.log(numSum,numSum) ②数组求和 function arrSum (arr){ let len arr.length…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 B: 双子数

[蓝桥杯 2023 国 B] 双子数 试题 B: 双子数 【问题描述】 若一个正整数 x x x 可以被表示为 p 2 q 2 p^2 \times q^2 p2q2&#xff0c;其中 p p p、 q q q 为质数且 p ≠ q p \neq q pq&#xff0c;则 x x x 是 一个 “双子数”。请计算区间 [ 2333 , 233333333333…

数据结构-在堆中插入或删除新元素

目录 在堆中插入新元素 在堆中删除元素 知识回顾 在堆中插入新元素 首先插入13&#xff08;这里我们依据的是小根堆原则&#xff0c;遇到大根堆也是类似的&#xff09; &#xff08;1&#xff09;将新元素放到队列的队尾&#xff0c;在完全二叉树里面显示的是堆底 如下图…