1. 程式人生 > 實用技巧 >沙雕的一天(一)

沙雕的一天(一)

題目:求階乘和:輸入n,求1!+2!+。。。+n!其中n!=1*2*...*n
大佬一定覺得很菜的一道題,但我沒一次AC,所以來寫寫錯誤點來提示自己(哈哈哈)。
一,普遍通用做法:for迴圈兩次巢狀

int main()
{
int n, p, sum = 0, i, j;
scanf("%d",&n);
for(i = 1; i <= n;i++){
p=1;
for(j =1;j <= i; j++){
p=p * j;
}
sum = sum + p;
}
printf("%d",sum)
return 0;
}
這個用了累加器和累乘器的原理,詳情如下:
累加器:
int i;
int sum=0;
for(i=1;i<=100,i++)
{
sum=sum+i;
}
printf("%d",sum);
累乘器:
int i;
int p=1;
for(i=2;i<=100;i++)
{
p=p*i;
}
printf("%d",p);

這樣就完美AC了

二,這道題可以很巧妙的用一次迴圈即可(但不是所有迴圈巢狀都可以精簡成一次迴圈,但如果可以,最好選最優)

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,ans=0,cnt=1

;//一定要初始化,如果輸入的數值沒有它,也就是它是我自己定義的,就一定要初始化
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cnt*=i;
ans+=cnt;
}
printf("%d",ans);
return 0;
}