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

URAL - 1114-Boxes (分步乘法原理)

时间:2018-11-03 15:22:46      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:ural   can   g++   class   const   style   限制   printf   lse   

题意;

  给你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\n",ans); 
20     return 0;
21 }

 

URAL - 1114-Boxes (分步乘法原理)

标签:ural   can   g++   class   const   style   限制   printf   lse   

原文地址:https://www.cnblogs.com/Cherry93/p/9900757.html

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