社区讨论
高精,10pts,求助(
P1655小朋友的球参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo2i8ydu
- 此快照首次捕获于
- 2023/10/23 14:16 2 年前
- 此快照最后确认于
- 2023/10/23 14:16 2 年前
CPP
#include <iostream>
#include <cstring>
using namespace std;
class bigint
{
public:
bigint()
{
length = 0;
memset(num, 0, sizeof(num));
}
int num[1005];
int length;
int& operator[](unsigned int i)
{
return num[i];
}
bigint operator +(const bigint &a)
{
bigint ans;
int mxl = max(length, a.length);
for(int i = 1; i <= mxl; i++)
{
ans[i] += num[i] + a.num[i];
if(i == mxl && ans[i] >= 10) mxl++;
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
}
ans.length = mxl;
return ans;
}
bigint operator *(const int &a)
{
bigint ans;
int mxl = length;
for(int i = 1; i <= mxl; i++)
{
ans[i] += num[i] * a;
ans[i + 1] += ans[i] / 10;
ans[i] %= 10;
}
while(ans.num[mxl + 1] > 0)
{
mxl++;
ans[mxl + 1] = ans[mxl] / 10;
ans[mxl] %= 10;
}
ans.length = mxl;
return ans;
}
friend ostream& operator << (ostream& os, const bigint &n)
{
for(int i = n.length; i >= 1; i--)
{
os << n.num[i];
}
os << endl;
return os;
}
};
bigint dp[105][105];
int main()
{
int n, m;
for(int i = 1; i <= 100; i++)
{
for(int j = 1; j <= 100; j++)
{
if(j == 1)
{
dp[i][j].length = 1;
dp[i][j].num[1] = 1;
}
else
{
bigint mul = dp[i - 1][j] * j;
bigint add = dp[i - 1][j - 1] + mul;
dp[i][j] = add;
}
}
}
while(cin >> n >> m)
{
cout << dp[n][m];
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...