码迷,mamicode.com
首页 > 其他好文 > 详细

NYOJ---1131买水果

时间:2015-04-07 09:55:51      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

买水果

时间限制:1000 ms  |  内存限制:65535 KB
难度:0
描述

       今天zz突然想吃水果了,然后他到超市去买水果,现超市有n个不同的水果,zz要买m个水果

(m<=n);那么zz有多少种买水果的方式??

输入
输入T组数据(T<=100)
然后输入T行,每行输入两个数n,m(0< n < 2^31);
输出
每一行输出一个数(保证在0~2^31);
样例输入
2
4 2
3 3
样例输出
6
1
上传者
ACM_张书军
分析:这是一道数学上的排列组合问题,另外数字比较大需要用到longlong的类型.
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    long long n,m;
    long long a,b,sum;
    int test;
    cin>>test;
    while(test--)
    {
        sum=1;
        scanf("%lld%lld",&n,&m);
        if(n-m<m)
            m=n-m;                    //使时间复杂度降了下来C(n,m)=C(n,n-m);如果没有的话会超时
            b=m;
        for(long long i=n;i>n-m;i--)
        {
            sum=sum*i;
            while(sum%b==0&&b>1)      //分子下面的从m到1的连乘
            {
                sum=sum/b;
                b--;
            }
        }
        printf("%lld\n",sum);
    }
}


NYOJ---1131买水果

标签:

原文地址:http://blog.csdn.net/qq_qingtian/article/details/44906449

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!