专栏文章
题解:P2270 [HNOI2002] 奶牛的运算
P2270题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miokoe9t
- 此快照首次捕获于
- 2025/12/02 20:46 3 个月前
- 此快照最后确认于
- 2025/12/02 20:46 3 个月前
1.题目大意:
有一个初始算式:
可以在其中添加 对括号(合法配对),形成不同的算式方案。
两个方案本质不同当且仅当存在某个数列 使得计算结果不同。
给定 和 ,求本质不同的算式方案数量。
2.解题思路:
- 初始有 个数,中间有 个减号。
- 添加括号时不能在第一个数前加左括号(因为这样不会改变运算顺序),每对括号需要占据两个不同的减号位置。
- 问题转化为:从 个减号位置中选出 个位置作为括号端点
- 公式:
3.代码实现:
CPP#include<bits/stdc++.h>
using namespace std;
//打印__int128大整数
void print(__int128 x){
if(x>9)print(x/10);
putchar(x%10+'0');
}
//计算组合数C(n,m)
__int128 getC(int n,int m){
if(m==0)return 1;
if(n<m)return 0;
__int128 ans=1;
for(int i=1;i<=m;i++){
ans*=(n-i+1);
ans/=i;
}
return ans;
}
int main(){
int n,k;
cin>>n>>k;
__int128 sum=0;
//累加C(n-1,0)+C(n-1,2)+...+C(n-1,2k)
for(int i=0;i<=2*k;i+=2){
sum+=getC(n-1,i);
}
print(sum);
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...