【牛客 - 185F】 假的数学游戏(斯特林公式,大数Java打表)
生活随笔
收集整理的這篇文章主要介紹了
【牛客 - 185F】 假的数学游戏(斯特林公式,大数Java打表)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
?
輸入描述:
第一行:一個整數X輸出描述:
第一行:一個整數N?
示例1
輸入
復制
7輸出
復制
10備注:
每個測試點所對應的X滿足:第i個測試點輸入的值為第i-1個測試點輸入的值乘以10再加上7。特別的,第一個測試點所輸入的值為7。提示:數據共有10組。解題報告:
? ?可以斯特林公式打表(因為數據都已知了,7,17,177,1777.....可以Java大數打表),也可以直接二分。 這里提供兩種二分方法。
AC代碼:
#include<bits/stdc++.h> typedef long long ll;using namespace std; const double pi = acos(-1), e = exp(1.0); ll x; double up; bool check(double n){return 0.5 * log(2 * pi * n) + n * log(n / e) >= up; } int main() {scanf("%lld",&x);up = x * log(x);int times = 51;double l = 1, r = 1e13, ans;while(times--) {ll mid = (l + r) / 2;if(check(mid)) ans = mid, r = mid;else l = mid;}cout <<(long long )ans;return 0; }AC代碼2:
#include<bits/stdc++.h> #define ll long long using namespace std;int main() {ll x;cin>>x;ll l=x,r=x*3,mid;while (l<r) {mid=(l+r)/2;if (log(mid*1.0)*mid-mid+log(x)-1<x*log(x)) l=mid+1; else r=mid;}cout<< l << endl;return 0; }?
總結
以上是生活随笔為你收集整理的【牛客 - 185F】 假的数学游戏(斯特林公式,大数Java打表)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 保险和银行存款有什么不同?保险和储蓄有哪
- 下一篇: 【POJ - 1001 】Exponen