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;
} 

posted on 2021-10-04 21:55  Atl212  阅读(41)  评论(0)    收藏  举报

导航