zoukankan      html  css  js  c++  java
  • URAL

    题意;

      给你n个盘子,A个红球,B个黑球,放的时候没有限制,可以不放,可以放一个红球,可以放一个黑球,也可以两个同时放,可以有剩余的球。

    求一共有多少放法。

    思路:

    可以利用分步乘法原理,红球和黑球是等价的,所以把黑球的放法总数×红球的放法总数就是答案

    还有一个比较坑的就是输出的问题,,%lld,%I64d,cout  都用了,,就是一直wa  最后百度了一下,,%I64u过了,真神奇的G++;

    代码如下

     1 #include <stdio.h>
     2 typedef long long ll;
     3 const int maxn=1e5+5;
     4 int main()
     5 {
     6     int n,a,b,c;
     7     scanf("%d%d%d",&n,&a,&b);
     8     if(a>b)c=a;
     9     else c=b;
    10     n--;
    11     ll temp=1,ans=1,sum=1;
    12     for(int i=1;i<=c;i++)
    13     {
    14         temp=temp*(n+i)/i;
    15         sum+=temp;
    16         if(i==a)ans*=sum;
    17         if(i==b)ans*=sum;
    18     }
    19     printf("%I64u
    ",ans); 
    20     return 0;
    21 }
  • 相关阅读:
    分苹果
    马拉车算法(求最长回文子串)
    KMP
    字典树
    关于子类和父类中的this的用法
    最长上生子序列LIS
    sass
    黑马程序员----java基础笔记下(毕向东)
    DOM
    ajax教程
  • 原文地址:https://www.cnblogs.com/Cherry93/p/9900757.html
Copyright © 2011-2022 走看看