2019藍橋杯省賽A組模擬賽(1)

1.這道題我是用公式寫的

首先介紹log函數

引入#include<cmath>

以e爲底:log(exp(n))

以10爲底:log10(n)

以m爲底:log(n)/log(m)

那麼求10000階乘我們只需要從log10(1)+........+log10(10000)向上取整即可,按照這個思路就很好寫了,貼代碼了

#include<bits/stdc++.h>
using namespace std;
double c;
int x;
int main()
{
	for(int i=1;;i++)
	{
		c+=log10(i);
		if(c>=9999)
		{
			x=i;
		break;
	    }
	}
	cout<<x<<endl;
	return 0;
}

2.這道題開始想了很久,一直不知道怎麼寫,後來看到期望我就來一個一個的分析期望,最高的炮臺明顯期望是1,最低的是1/2019,那麼來分析中間的期望,只考慮比當前炮臺高的炮臺,因爲比當前炮臺還矮的話無法對期望產生任何影響,比如考慮第四高的炮臺,有三個炮臺比他高,那麼有四個位置,接下來要考慮4個位置是否等可能,我是這麼想的,不一定對,可能性的大小是由炮臺之間的炮臺的個數決定的,又因爲沒有任何限制,所以每個位置的可能性都是相同的,那麼結果就很好算了。

#include<bits/stdc++.h>
using namespace std;
double c;
int main()
{
	for(int i=1;i<=2019;i++)
	c+=1.0/i;
	printf("%.4lf",c);
	return 0;
 } 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章