zoukankan      html  css  js  c++  java
  • 球迷购票问题

    题目描述

    球赛门票的售票处规定每位购票者限购一张门票,且每张门票售价50元。购票者中有m位手持50元钱币,另有n人手持100元。假设售票处开始售票时无零钱。问这m+n人有几种排队方式可使售票处不致出现找不出钱的局面。

    对给定的m,n(0<=m,n<=5000),计算出排队方式总数。

    输入格式

    两个整数m和n。

    输出格式

    输出方案数.

    递推了好长时间,不得不看题解,然后向蔡佳文借了一本数学《奥赛经典》,学到一个公式。还用到了高精度除法。

    C(m+n,n)-C(m+n,n-1);

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int m,n,a[9001];
     5 
     6 void Mul(int x){
     7      for(int i=0;i<9000;++i)
     8      a[i]*=x;
     9      
    10      for(int i=0;i<9000;++i)
    11      if(a[i]>10)
    12      {
    13        a[i+1]+=a[i]/10;
    14        a[i]%=10;
    15                    }
    16      }
    17 
    18 void Div(int x){
    19      int now=0;
    20      for(int i=9000;i>=0;--i)
    21      {
    22        now=10*now+a[i];
    23        a[i]=now/x;
    24        now%=x;
    25               }
    26      }
    27 
    28 int main()
    29 {
    30     cin>>m>>n;
    31     
    32     if(n>m) {cout<<0<<endl;return 0;}
    33     
    34     a[0]=1;
    35     
    36     swap(n,m);
    37     for(int i=1;i<=m;++i)
    38     {
    39       Mul(m+n-i+1);
    40       Div(i);
    41             }
    42     
    43     Mul(n-m+1);
    44     Div(n+1);
    45     
    46     int i=9000;
    47     while(a[i]==0) i--;
    48     while(i>=0) cout<<a[i--];
    49     
    50     cout<<endl;
    51   // system("pause");
    52     return 0;
    53 
    54     }
  • 相关阅读:
    indexedDB 增删改查
    css-包含块
    css解析规则
    css样式---隐藏元素
    javascript实现数据结构----栈
    Android Studio 显示 logcat
    Android Spinner 绑定键值对
    Java json转model
    this view is not constrainted......
    Android 访问 Webapi 更新UI
  • 原文地址:https://www.cnblogs.com/noip/p/2656909.html
Copyright © 2011-2022 走看看