社区讨论
蒟蒻MLE求助
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo1yjefw
- 此快照首次捕获于
- 2023/10/23 05:05 2 年前
- 此快照最后确认于
- 2023/11/03 05:30 2 年前
Rt,代码如下
C#include<iostream>
//#include<bits/stdc++.h>
#pragma warning(disable:4996)
#define ll long long
using namespace std;
#define L 100000
struct large {
int len;
long long val[100005];
void clear() {
len = 0;
memset(val, 0, sizeof(val));
}
void setu(int k) {
clear();
len = 1;
val[1] = k;
}
void write() {
printf("%lld", val[len]);
for (int i = len - 1; i >= 1; i--) printf("%05lld", val[i]);
printf("\n");
}
}ans;
large pls(large x, large y) {
large s;
s.clear();
s.len = max(x.len, y.len) + 20;
for (int i = 1; i <= s.len; i++) {
s.val[i] += x.val[i] + y.val[i];
s.val[i + 1] += s.val[i] / L;
s.val[i] %= L;
}
for (int i = 1; i <= s.len; i++) {
s.val[i + 1] += s.val[i] / L;
s.val[i] %= L;
}
while (s.len && !s.val[s.len])s.len--;
return s;
}
large mult(large x, large y) {
large s;
s.clear();
s.len = x.len + y.len + 20;
for (int i = 1; i <= x.len; i++)
for (int j = 1; j <= y.len; j++) {
s.val[i + j - 1] += x.val[i] * y.val[j];
s.val[i + j] += s.val[i + j - 1] / L;
s.val[i + j - 1] %= L;
}
for (int i = 1; i <= s.len; i++) {
s.val[i + 1] += s.val[i] / L;
s.val[i] %= L;
}
while (s.len && !s.val[s.len])s.len--;
return s;
}
inline ll read() {
ll date = 0, w = 1; char c = 0;
while (c < '0' || c>'9') { if (c == '-')w = -1; c = getchar(); }
while (c >= '0' && c <= '9') { date = date * 10 + c - '0'; c = getchar(); }
return date * w;
}
ll n, m;
large A(ll n, ll m) {
large s, x;
s.clear();
if (m > n)return s;
s.setu(1);
if (!m)return s;
for (ll i = n - m + 1; i <= n; i++) {
x.clear(); x.setu(i);
s = mult(s,x);
}
return s;
}
inline void solve(ll n, ll m) {
ans = pls(mult(A(n, n), mult(A(n + 1, 2), A(n + 3, m))), mult(mult(mult(A(n, n), A(n + 1, 1)), mult(A(2, 2), A(m, 1))), A(n + 1, m - 1)));
ans.write();
}
int main() {
n = read(); m = read();
solve(n, m);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...