题目链接
目前代码:
#include <bits/stdc++.h>
using namespace std;
int n, i, j;
__int128 a[100005];
inline void print(__int128 x) {
if (x < 0) {
putchar('-');
x = -x;
}
if (x > 9)
print(x / 10);
putchar(x % 10 + '0');
}
int main() {
scanf("%d", &n);
if (n == 1) return printf("1"), 0;
int x = n;
i = 2;
while (x >= i) {
a[j++] = i;
x = x - i;
i++;
}
int p = j;
j--;
while (x--) {
a[j]++;
j = (j - 1 + p) % p;
}
__int128 sum = 1;
for (int s = 0; s < p; s++) {
sum = sum * a[s];
}
print(sum);
return 0;
}
输入1000以上的数字会爆int128!