问题描述
当你看到标题“AC”时,你是否兴奋?如果答案是YES,那么AC;
你必须在学校学习这两个组合公式。如果你忘记了,请看照片。
现在我会给你n和m,你的任务是计算答案。
你必须在学校学习这两个组合公式。如果你忘记了,请看照片。
![](https://i-blog.csdnimg.cn/blog_migrate/23a62e07a23662747495540eba5c49c0.jpeg)
现在我会给你n和m,你的任务是计算答案。
输入
在第一行中,有一个整数T表示测试用例的数量。
然后T行在T行中。
每个案例包含一个字符'A'或'C',两个整数代表n和m。(1 <= N,M <= 10)
然后T行在T行中。
每个案例包含一个字符'A'或'C',两个整数代表n和m。(1 <= N,M <= 10)
产量
对于每种情况,如果字符是'A',计算A(m,n),如果字符是'C',则计算C(m,n)。
并在一行中打印答案。
并在一行中打印答案。
示例输入
2A 10 10C 4 2
示例输出
3628800
6
一遍AC,但是感觉我写的有点麻烦了。
代码:
#include <stdio.h>
int main(){
int N,m,n;
char c [2];
长久的回答;
的scanf( “%d”,&N);
而(N-){
scanf(“%s%d%d”,c,&n,&m);
ANS = 1;
if(c [0] =='A'){
if(n == m){
for(int i = 1; i <= n; i ++){
ANS * = I;
}
的printf( “%LLD \ n” 个,ANS);
}
否则如果(m == 1)
的printf( “%d \ N”,N);
其他{
for(int i = 1; i <= n; i ++){
ANS * = I;
}
for(int i = 1; i <= nm; i ++){
ANS / = I;
}
的printf( “%LLD \ n” 个,ANS);
}
继续;
}
else if(c [0] =='C'){
如果(n == m)
的printf( “1个\ n”);
否则如果(m == 1)
的printf( “%d \ N”,N);
其他{
for(int i = 1; i <= n; i ++){
ANS * = I;
}
// printf(“%lld \ n”,ans);
for(int i = 1; i <= m; i ++){
ANS / = I;
}
// printf(“%lld \ n”,ans);
for(int i = 1; i <= nm; i ++){
ANS / = I;
}
的printf( “%LLD \ n” 个,ANS);
}
继续;
}
}
返回0;
}