[C++][算法基础]求组合数(IV)

输入 𝑎,𝑏,求 C_{a}^{b} 的值。

注意结果可能很大,需要使用高精度计算。

输入格式

共一行,包含两个整数 𝑎 和 𝑏。

输出格式

共一行,输出 C_{a}^{b} 的值。

数据范围

1≤b≤a≤5000

输入样例:
5 3
输出样例:
10

代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

const int N = 5010;
int a, b, cnt;
int Primes[N], st[N], leave[N];

void GetPrime(int n)
{
    for(int i = 2;i <= n;i ++)
    {
        if(st[i] == 0){
            Primes[cnt] = i;
            cnt++;
        }
        for(int j = 0; Primes[j]*i <= n; j++)
        {
            st[Primes[j] * i] = 1;
            if(i % Primes[j] == 0){
                break;
            }
        }
    }
}

int GetNum(int x, int p) {
    int res = 0;
    while (x) {
        res += x / p;
        x /= p;
    }
    return res;
}

vector<int> HighMul(vector<int> a, int b) {
    vector<int> c;
    int temp = 0;
    for (unsigned int i = 0; i < a.size(); i++) {
        temp += a[i] * b;
        c.push_back(temp % 10);
        temp /= 10;
    }
    while (temp) {
        c.push_back(temp % 10);
        temp /= 10;
    }
    return c;
}

int main() {
    cin >> a >> b;
    GetPrime(a);
    for (int i = 0; i < cnt; i++) {
        int pt = Primes[i];
        leave[i] = GetNum(a, pt) - GetNum(b, pt) - GetNum(a - b, pt);
    }
    vector<int> res;
    res.push_back(1);
    for (int i = 0; i < cnt; i++) {
        for (int j = 0; j < leave[i]; j++) {
            res = HighMul(res, Primes[i]);
        }
    }
    for (int i = res.size() - 1; i >= 0; i--) {
        cout << res[i];
    }
    return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一线实战:国产数据库Mogdb双网卡同步最佳实践

前言 大家都知道Oracle数据库无论是单机还是RAC集群在进行生产部署实施时&#xff0c;我们都会对网卡做冗余考虑&#xff0c;使用双网卡&#xff0c;比如public、心跳网络。这样的目的主要是为了安全&#xff0c;避免单点故障。当然双网卡Bond不仅是可以做主备还可以支持负载均…

安装mysql的流程

安装mysql的步骤 安装流程 [rootlocalhost z]# cd /mnt/share/share[rootlocalhost share]# ll[rootlocalhost share]# cp mysql157-community-release-el7-10.noarch.rmp /usr/localcp: cannot stat ‘mysql157-community-release-el7-10.noarch.rmp’: No such file or direc…

企业车辆管理系统平台是做什么的?

企业车辆管理系统平台是一种综合性的管理系统&#xff0c;它主要集车辆信息管理、车辆调度、车辆维修、油耗管理、驾驶员管理以及报表分析等多种功能于一体。通过这个平台&#xff0c;企业可以实现对车辆的全面管理&#xff0c;优化车辆使用效率&#xff0c;降低运营成本&#…

JavaWeb开发06-原理-Spring配置优先级-Bean管理-SpringBoot原理-Maven继承和聚合-私服

一、Spring配置优先级 不同配置文件&#xff0c;配置同一个属性谁有效 properties>yml>yaml 命令行参数>Java系统属性 项目打包后要改变属性&#xff1a; 红色是Java系统属性&#xff0c;绿色是命令行参数 ‘ 二、Bean管理 1.获取bean 获取IOC容器&#xff1a;ap…

linux之进程通信

目录 一、进程通信介绍 1.目的 2.发展 3.进程通信是什么&#xff0c;怎么通信&#xff1f; 二、管道 1.介绍 2.匿名管道 1.单向通信管道原理 2.代码实现 3.管道特征 4.管道的四种情况 5.管道的应用场景 使用管道实现一个简易版本的进程池 3.命名管道 1.思考 2.…

了解IPS和IDS:这5个差异将改变你的安全观念!

IPS 代表 入侵防御系统&#xff08;Intrusion Prevention System&#xff09;&#xff0c;它是 IDS 的进一步发展&#xff0c;不仅具备检测攻击的能力&#xff0c;还能在检测到攻击后主动采取措施阻止攻击。IPS 通常部署在防火墙和网络设备之间&#xff0c;能够深度感知并检测流…

ubuntu18.04与windows文件互传

目录 window下载Xftp软件ubuntu上的配置windows端Xftp软件的使用 window下载Xftp软件 下载&#xff1a;家庭/学校免费版 安装教程推荐下面的文章 xftp7免费版安装教程&#xff08;详细&#xff09; ubuntu上的配置 在进入系统后&#xff0c;确保有网络连接的情况下按Ctrl A…

cookie与session区别和联系

在Web应用中&#xff0c;HTTP协议是无状态的&#xff0c;每次请求都是独立的&#xff0c;服务器无法直接识别一个用户的不同请求之间的关联。这就导致了如果我们希望在一个会话中保持一些数据的状态&#xff0c;比如用户的身份认证信息、购物车内容等&#xff0c;就需要借助Coo…

golang本地缓存库之bigcache

1. 前言 上周工作之余逛github看到一个本地缓存库bigcache&#xff0c;这个是allegro公司开源的一个项目&#xff0c;主要是用于本地缓存使用&#xff0c;根据他们的博客说明&#xff0c;他们编写这个库最初的目的就是实现一个非常快速的缓存服务。 看了下bigcache这个库的源…

[StartingPoint][Tier2]Base

Task 1 Which two TCP ports are open on the remote host? (远程服务器开放了哪两个TCP端口?) $ nmap -sC -sV 10.129.234.232 22,80 Task 2 What is the relative path on the webserver for the login page? (相关的登录页面路径是什么?) /login/login.php Task 3 …

自动驾驶控制算法

本文内容来源是B站——忠厚老实的老王&#xff0c;侵删。 三个坐标系和一些有关的物理量 使用 frenet坐标系可以实现将车辆纵向控制和横向控制解耦&#xff0c;将其分开控制。使用右手系来进行学习。 一些有关物理量的基本概念&#xff1a; 运动学方程 建立微分方程 主要是弄…

格局在尘埃之间与宇宙之外。

在沈自所 见天地、见众生、见自己。 所里待了两年半&#xff0c;感叹时光飞逝&#xff0c;无疑在所这段时间&#xff0c;对我的成长是巨大的支持。感谢我的导师给予我的自由度和包容&#xff0c;感谢817所有兄弟姐妹。感谢所里面的兄弟们&#xff0c;我们一起经历了很多事情&…

ctfshow web29-web40

命令执行 看清都过滤了些什么&#xff01;&#xff01; 知识点&#xff1a; web34&#xff1a;当;和()被过滤了就用语言结构&#xff0c;一般有echo print isset unset include require web37&#xff1a;data协议是将后面的字符串当成php代码执行&#xff0c;例如 /?cdat…

【leetcode面试经典150题】62. K 个一组翻转链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Oracle 可传输表空间(Transportable Tablespace)

在数据归档、备份、测试等场景&#xff0c;我们经常需要将数据从一个系统移动到另一个系统&#xff0c;一个较常用的方案是数据的导出/导入&#xff08;export/import&#xff09;&#xff0c;但是在数据量较大的场景&#xff0c;此方案可能比较耗时。而可传输表空间是一种以文…

大数据技术应用实训室解决方案

一、大数据课程体系 1.1 大数据实验实训课程体系设计依据 大数据实验实训课程体系的设计依据主要围绕培养目标、培养方案和课程体系建设三个方面来展开。 1、培养目标 大数据实验实训课程的设计旨在培养具备大数据理论知识和实践技能的专业人才。具体而言&#xff0c;这些人才…

Midjourney 中文文档

快速使用 学习如何在Discord上使用Midjourney Bot从简单的文本提示中创建自定义图像。 行为准则 不要表现出不良行为。不要使用我们的工具制作可能引起煽动&#xff0c;不安或引起争议的图像。这包括血腥和成人内容。尊重其他人和团队。 1&#xff1a;加入Discord 访问Midj…

【软件测试】关于Web自动化测试

文章目录 &#x1f343;前言&#x1f332;如何实现Web自动化&#x1f6a9;安装驱动管理&#x1f6a9;Selenium库的安装 &#x1f333;自动化常用函数&#x1f6a9;元素的定位&#x1f388;cssSelector&#x1f388;xpath &#x1f6a9;操作测试对象&#x1f388;点击/提交对象—…

Linux中docker安装

准备工作 系统要求 Docker 支持 64 位版本 CentOS 7/8&#xff0c;并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求&#xff0c;但由于内核版本比较低&#xff0c;部分功能&#xff08;如 overlay2 存储层驱动&#xff09;无法使用&#xff0c;并且部分功能可能不…

个人电脑信息安全注意事项

个人电脑信息安全注意事项 一、密码安全&#xff1a; 设置复杂且独特的密码&#xff0c;避免使用容易猜测或常见的密码。 定期更换密码&#xff0c;特别是在重要账户或应用上。 不要在多个账户上重复使用相同的密码。 使用密码管理工具来安全地存储和访问密码。 二、软件安…