牛客題 小P的數學問題 暴力MAX優化技巧

2021-08-19 06:02:23 字數 1053 閱讀 8118

江西財經大學第一屆程式設計競賽-小p的數學問題

晚上,小p喜歡在寢室裡乙個個靜靜的學習或者思考,享受自由自在的單身生活。

他總是能從所學的知識散發出奇妙的思維。

今天他想到了乙個簡單的階乘問題,

0!= 1

1!= 1

2!= 1 * 2 = 2

3!= 1 * 2 * 3 = 6

4!= 1 * 2 * 3 *4 = 24

5!= 1 * 2 * 3 4 5 = 120

如果 n=1000000000,那麼n的階乘會是多少呢,小p當然知道啦,那麼你知道嗎?

輸入描述:

第一行輸入乙個整數t(表示樣例個數)

接下來t組樣例

每組樣例一行,輸入乙個整數n(0

<=n

<=1000000000)

輸出描述:

輸出t行

每一行輸出n的階乘 n!(由於這個數比較大,所以只要輸出其對1000000007取膜的結果即可)

​ 非常暴力,非常暴力,非常暴力!

​ n的大小在 0<=n<=1000000000 裡面的話,暴力迴圈一定會炸的,那麼就進行一些簡單的優化,比如把n的最大範圍1e9分成100份,在每個結點上先把值存起來。然後在讀入值的時候進行判段在哪個區間內,此時最多迴圈1e7次,並且這是簡單迴圈,花費的時間一定非常少。

#include

#include

#define lon long long

using

namespace

std;

lon n,p = 1000000007;

lon a[110]=;

int main()

if(p==1000000007)

lon ans=1;

for(int i=1;i<=n;i++)

ans=ans*i%p;

cout

0;}

小P的數學問題

晚上,小p喜歡在寢室裡乙個個靜靜的學習或者思考,享受自由自在的單身生活。他總是能從所學的知識散發出奇妙的思維。今天他想到了乙個簡單的階乘問題,0!1 1!1 2!1 2 2 3!1 2 3 6 4!1 2 3 4 24 5!1 2 3 4 5 120 如果 n 1000000000,那麼n的階乘會是...

小C的數學問題

思路 思路就是把a i 作為最小值,然後去用兩個指標去分別尋找a i 左側比a i 小的那個位置的後乙個位置以及右側比a i 大的那個位置的前乙個位置。然後我就開始根據這個思路去求解問題,但是沒有進行優化直接進行的,時間超時。includeusing namespace std const int ...

問題 J 小C的數學問題

題目描述 小c是個雲南中醫學院的大一新生,在某個星期二,他的高數老師扔給了他乙個問題。讓他在1天的時間內給出答案。但是小c不會這問題,現在他來請教你。請你幫他解決這個問題。有n個數,每個數有權值。數學老師定義了區間價值為區間和乘上區間內的最小值。現在要你找出有最大區間價值的區間是什麼,並輸出區間價值...