本人最讨厌打高精度了。。。。。但遇到了这种题没办法,还是得打QWQ。
首先看第一行,明显的一个代换,不解释了。
然后来看第二问,求出后500位数字。
很明显,这道题要写高精,要不是存不下那么大的数。
所以说打一个高精度乘法即可。
但是!看数据范围,正常的高精度会TLE,所以可以考虑高精快速幂,具体实现和高精度和普通的快速幂没啥区别,也是奇数答案先乘一次它,然后自己乘自己,最后边算边记录就行。
#include <bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch == '-') f=-1 ; ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48) ; ch=getchar();}
return x*f;
}
const int M = 1010;
int a[M]={0,1},b[M]={0,2},c[M];
int n;
signed main(){
//freopen("mason.in","r",stdin);
//freopen("mason.out","w",stdout);
n=read();
cout << (int)(log10(2)*n+1