社区讨论
75分求助
P1009[NOIP 1998 普及组] 阶乘之和参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo1tyq6v
- 此快照首次捕获于
- 2023/10/23 02:56 2 年前
- 此快照最后确认于
- 2023/11/03 03:30 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int a[100], s[100], la, ls;
void add() {
int x = 0;
for(int i = 0; i < la; ++i) {
s[i] += a[i] + x;
x = s[i] / 10;
s[i] %= 10;
}
if(la > ls) ls = la;
if(x) {
s[la++] += x;
}
while(s[ls - 1] == 0 && ls > 1) ls--;
}
void mul(int n) {
int x = 0;
for(int i = 0; i < la; ++i) {
a[i] = a[i] * n + x;
x = a[i] / 10;
a[i] %= 10;
}
if(x) a[la++] = x;
while(a[la - 1] == 0 && la > 1) la--;
return;
}
int main() {
int n, n2;
ls = 1;
s[0] = 0;
cin >> n;
n2 = n;
while(n2) {
a[la++] = n2 % 10;
n2 /= 10;
}
for(int i = 1; i <= n; ++i) {
memset(a, 0, sizeof(a));
la = 1;
a[0] = 1;
for(int j = i; j >= 1; --j) {
mul(j);
}
add();
}
for(int i = ls - 1; i >= 0; --i) {
cout << s[i];
}
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...