求階乘之和,以前最開始想到的就是寫兩個迴圈,複雜的o(n^2) , 後來再寫一道題的時候,看到只走一遍的,複雜的為o(n)的
題目 :傳送門
這個是先用線性篩篩出素數,剛開再怎麼算階乘和的時候,就犯難了。這麼大的數,怎麼搞
之前的**:
longlong sum = 0
;
long
long sum = 0
;
for(int i = 1 ; i <= n ; i++)
sum +=num;
}
優化之後可以用:
longlong sum = 0
;long
long num = 1
;for(int i = 1 ;i <= 5 ; i++)
cout
《直接降低的很多
附上連線這道的**:
#includeusing
namespace
std;
#define max 100000005typedef
long
long
ll;bool
visit[max];
int prime[10000000
];int k = 0
;ll p , sum = 0
;;void
isprime()
}}int
main()
cout
}return0;
}
計算1 n 的數列之和
編寫程式,輸入乙個正整數n,求下列算式的值。要求定義和呼叫函式fact k 計算k的階乘,函式返回值的型別是double。1 1 2 1 n 輸出保留5位小數。下面是一些合理的表示式的例子 input 5 output 1.71667 package 華為機試題 author hutongling ...
求1 n中1的個數
輸入乙個整數,求1 n這n個數的十進位制表示1的個數。將n的十進位制的每一位單獨拿出討論,每一位的值記為weight。1 個位 假若n 534。534的個位從0 9變化了53次,這53我們記為round。因為weight為4 0。因此第54輪為0 4,因此1出現了count round 1。若wei...
求n個數 1 n 的質因子
求n個數 1 n 的質因子,我用到了素數篩選法的思想,例如找到素數2,2是2,4,6,8,10 的質因子,3是3,6,9,12 的質因子,然後找到素數5,若是求乙個數n的質因子,請參考 include includeint a 10001 20 b 10001 b i 表示第i個數的質因子個數,a ...