L1-013 计算阶乘和 (10 point(s))
-
参考别人的写法发现自己写繁琐了,因为 N! 是连续递增的,所以可以用 s *= n 每次循环乘一次得到新阶乘即可,不需要每次重新循环计算阶乘。
#include <bits/stdc++.h>
using namespace std;
int main(){
int N, ans = 0, s = 1, n = 1;
cin >> N;
do{
s *= n++;
ans += s;
}while(--N);
cout << ans;
}
#include <bits/stdc++.h>
using namespace std;
int main(){
int N, ans = 0;
cin >> N;
do{
int tmp = 1, n = N;
do{
tmp *= n;
}while(--n);
ans += tmp;
}while(--N);
cout << ans;
}
浙公网安备 33010602011771号