题目描述

给定两个正整数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. JBOOT使用总结

    @Override public SwAdmin findById(long id) { return DAO.findFirst("SELECT * FROM sw_admin WHERE ...

  2. aria2 cmd set chmod, and others..

    import 'package:flutter/material.dart'; import 'dart:io'; import 'dart:async'; import 'package:rxdar ...

  3. Matlab建造者模式

    构建者模式又叫建造者模式(Builder),是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继 ...

  4. Commander基本使用

    随着NodeJs的不断发展,对于前端来说要做的东西也就更多,Vue脚手架React脚手架等等等一系列的东西都脱颖而出,进入到人们的视野当中,对于这些脚手架工具来讲也只是停留在应用阶段,从来没有想过脚手 ...

  5. Firebird 事务隔离级别

    各种RDBMS事务隔离都差不多,Firebird 中大致分为3类: CONCURRENCY.READ_COMMITTED.CONSISTENCY. 在提供的数据库驱动里可设置的事务隔离级别大致如下3类 ...

  6. Android为TV端助力记录EditText.setInputType的坑

    如XML中设置android:inputType=”numberDecimal”在Java代码中仅设置setInputType(EditorInfo.TYPE_NUMBER_FLAG_DECIMAL) ...

  7. Linux下的基本命令(不定期更新,欢迎指正错误、交流学习)

    ls 列出目录内容 -a //显示所有文件,包括隐藏文件 -i //显示详细信息 -d //显示目录属性 -h //人性化显示文件大小 -l //长格式显示,也可简写为 ll pwd 显示当前工作路径 ...

  8. NUCLEO-8L152开发板中文应用笔记整理集合

    [AN5182]基于Adafruit TFT Shield与STM8 Nucleo-64板的图片查看器:https://www.yiboard.com/thread-962-1-1.html 本应用笔 ...

  9. Charles 4.2.1 HTTPS抓包

    Charles 4.2.1 HTTPS抓包 Charles iPhone抓包 Mac必须与iPhone连接同一WiFi Proxy -> SSL Proxying Settings ->  ...

  10. 微信小程序转百度小程序代码

    听说百度小程序开始出现手机端搜索流量,作为SEO一员,必须搞他.但是又奈何之前做的都是微信小程序,所以用php写了一个微信小程序转百度小程序代码. 修改文件后缀名 .wxml转换为.swan .wxs ...