URAL - 1114-Boxes (分步乘法原理)
Posted cherry93
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URAL - 1114-Boxes (分步乘法原理)相关的知识,希望对你有一定的参考价值。
题意;
给你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 }
以上是关于URAL - 1114-Boxes (分步乘法原理)的主要内容,如果未能解决你的问题,请参考以下文章