1 条题解
-
-5
另一种解法:
对比 与 发现:
$n^n \times (\frac{n+1}{n})^n \times (n+1)=(n+1)^{n+1}$ 枚举发现
那么我们将 以内的 打表记录在数组中, 以外的就拿 (至少精确到 这个精度才够)来代替 那么我们记录 的第一位为 从 开始 判断这次从 会增长几位
代码
#include<bits/stdc++.h> using namespace std; string s; int x=1; int ss(double a){ int cnt=0; while(a>=1){ cnt++; a/=10; } return cnt-1; } double t=4; double nt[200]={0,0,2.25,2.37037,2.44141,2.48832,2.52163,2.5465,2.56578,2.58117,2.59374,2.6042,2.61304,2.6206,2.62715,2.63288,2.63793,2.64241,2.64643,2.65003,2.6533,2.65626,2.65897,2.66145,2.66373,2.66584,2.66778,2.66959,2.67128,2.67285,2.67432,2.6757,2.67699,2.67821,2.67936,2.68044,2.68146,2.68244,2.68336,2.68423,2.68506,2.68586,2.68661,2.68733,2.68802,2.68868,2.68931,2.68992,2.6905,2.69105,2.69159,2.6921,2.6926,2.69307,2.69353,2.69398,2.6944,2.69481,2.69521,2.6956,2.69597,2.69633,2.69668,2.69702,2.69734,2.69766,2.69797,2.69827,2.69856,2.69884,2.69912,2.69938,2.69964,2.69989,2.70014,2.70038,2.70061,2.70084,2.70106,2.70127,2.70148,2.70169,2.70189,2.70209,2.70228,2.70246,2.70264,2.70282,2.703,2.70317,2.70333,2.7035,2.70365,2.70381,2.70396,2.70411,2.70426,2.7044,2.70454,2.70468,2.70481}; int main(){ //while(2){ x=1; t=4.0; cin>>s; if(s[0]=='1'&&s.size()==1){ cout<<1; return 0; //continue; } for(double i=2;;i+=1){ if(s.size()<=x){ //cout<<t<<endl; cout<<i<<endl; break; } if(i<=90){ x+=ss(t*nt[int(i)]*(i+1)); t*=(nt[int(i)]*(i+1)); } else{ x+=ss(t*2.7185*(i+1)); t*=(2.7185*(i+1)); } while(t>=10){ t/=10; } } // } return 0; }
- 1
信息
- ID
- 137
- 时间
- 100ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 152
- 已通过
- 13
- 上传者