题目描述

给定两个正整数n,m,计算组合数C(n,m)。组合数计算公式为:C(n,m)=n!/((n-m)!*m!)

已知n,m <= 50. 结果很大需要使用long long存储。

输入

输入两个整数n,m

输出

输出结果

样例输入

4 2

样例输出

6

题目中,运算的结果可以在long long的类型中存储,但是运算过程中产生的数据是存不下的,所以进行了拆分运算。
例如:50!,把50*49*...*41的结果存在一个long long的类型中(这个结果能不能存下没有验证,在这只是说明方法),40*39*...*31的结果再存到一个long long的类型中。
大概就是这个意思,分开来进行运算。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int main()
{
int n,m;
scanf("%d %d",&n,&m);
long long sum=;
long long a[]={,,,,};
int b[];
int num=;
int ans=;
for(int k=,i = n;i>n-m;i--)
{
if(k==) //每5个数为一组,把运算结果存到a数组中。
{
ans++;
k = ;
}
a[ans] = a[ans]*i;
k++;
}
ans = ;
for(int k=,i = m;i>;i--) //分开进行除法运算,
{
if(k==)
{
ans++;
k = ;
}
if(a[ans]%i == )
{
a[ans] = a[ans]/i;
k++;
}
else
{
b[num] = i;
num++; }
}
for(int i = ;i<;i++) //对于上一部分中不能整除的数,看其可否被a数组中的其他数整除
{
for(int j = ;j<num;j++)
{
if(a[i]%b[j] == && b[j] != )
{
a[i] = a[i]/b[j];
b[j] = ;
}
}
}
for(int i = ;i<;i++) //求结果
{
sum = sum * a[i];
} printf("%lld\n",sum);
return ;
}
 

QHUOJ - 1533: 计算组合数(大数计算)的更多相关文章

  1. SDUT1574组合数的计算(组合数)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1574 这个题,比较奇怪,是用递推去做的,我试了 ...

  2. SDUT1574:组合数的计算

    题目描述 给定n组整数(a,b),计算组合数C(a,b)的值.如C(3,1)=3,C(4,2)=6. 输入 第一行为一个整数n,表示有多少组测试数据.(n <= 100000) 第2-n+1行, ...

  3. Java练习 SDUT-1586_计算组合数

    计算组合数 Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 计算组合数.C(n,m),表示从n个数中选择m个的组合数. ...

  4. 组合数的计算以及组合数对p取余后结果的计算

    前奏:统计 n! 中的所有质因子中pi的个数 普通方法:复杂度O(nlogn), 当n为10的18次方无法承受 // 复杂度O(nlogn), n为10的18次方无法承受 int cal(int n, ...

  5. js 大数计算

    js 大数计算 原理 JavaScript 安全整数 是 -253-1 ~ 253-1 ,即: -9007199254740991 ~ 9007199254740991; 换句话说,整数超过这个范围就 ...

  6. SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

    前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...

  7. boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET

    boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET     boost::crc_32_type crc32;       crc32. ...

  8. boost计算随机数和计算crc32简单示例

    boost计算随机数和计算crc32简单示例 - jwybobo2007的专栏 - 博客频道 - CSDN.NET boost计算随机数和计算crc32简单示例 2013-02-18 17:14 10 ...

  9. 实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积

    (1)定义一个形状类(Shape)方法:计算周长,计算面积子类:矩形类(Rectangle) :额外的方法:differ() 计算长宽差圆形类(Circle)三角形类(Triangle)正方形类(Sq ...

随机推荐

  1. command injection命令注入

    命令注入 是指程序中有调用系统命令的部分,例如输入ip,程序调用系统命令ping这个ip.如果在ip后面加一个&&.&.|.||命令拼接符号再跟上自己需要执行的系统命令 在pi ...

  2. python3基础之“术语表(2)”

    51.编程: 让计算机执行的指令. 52.代码: 让计算机执行的命令. 53.底层编程语言: 与高级语言相比,更接近二进制的语言. 54.高级编程语言: 读起来像英语的易于理解的语言. 55.汇编语言 ...

  3. 英语secuerity证券

    中文名:证券 外文名:security.secuerity 类别:经济权益凭证统称 组成:资本证券.货币证券和商品证券 作用:用来证明持者权益的法律凭证 发展历程 世界 1603年,在共和国大议长奥登 ...

  4. GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率

    GitHub Java项目推荐|功能丰富的 Java 工具包|提高开发效率 功能丰富的 Java 工具包.它帮助我们实现了常用的工具方法,从而减少代码的体积,提高开发效率.该项目最初是作者工作项目中的 ...

  5. MySQL修炼之路三

    1. SQL查询 1. 执行顺序 3. select ... 聚合函数 from 表名 1. where ... 2. group by ... 4. having ... 5. order by . ...

  6. MySQL Replication--事务组提交和多线程复制

    事务组提交和多线程复制 在MySQL 5.7版本引入基于LOGICAL_CLOCK的多线程复制,依赖于BINLOG事件中的last_committed属性,该last_committed属性是否与事务 ...

  7. MySQL MHA--故障切换模式(GTID模式和非GTID模式)

    GTID和非GTID故障切换模式选择 MySQL 5.6版本引入GTID来解决主从切换时BINLOG位置点难定位的问题,MHA从0.56版本开始支持基于GTID的复制,在切换时可以采用GTID模式和非 ...

  8. ElasticSearch(十):Elasticsearch集群配置

    我本地虚拟机配置了两台centos机器,分别安装了elasticsearch6.4.0版本,IP分别为:192.168.56.12, 192.168.56.13 分别修改两个机器上Elasticsea ...

  9. *P2398 GCD SUM[数论]

    题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 解析 给出n求sum. gcd(x,y)表示x,y的最大公约数. 直接枚举复杂度为\(O(n^2)\),显然无 ...

  10. XJCO1711 Procedural Programming

    University of Leeds School of ComputingProcedural Programming XJCO1711Semester 1, 2019-2020Coursewor ...