1018 Big Number 简单数论
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1018 Big Number 简单数论相关的知识,希望对你有一定的参考价值。
高精度计算肯定会超时,高精代码如下:
我还做了去除后导零进行优化但是仍会超时。
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
int cnt=0;
vector<int> mtl(vector<int> A,int d)
{
vector<int> C; int t=0;
for(int i=0;i<A.size()||t;i++)
{
if(i<A.size()) t+=A[i]*d;
C.push_back(t%10);
t/=10;
}
while(C.size()>1&&C.back()==0) C.pop_back();
bool flag=false;
vector<int>B;
for(int i=0;i<C.size();i++)
{
if(C[i]==0&&!flag) cnt++;
else
{
B.push_back(C[i]);
flag=true;
}
}
return B;
}
int main(void)
{
int t; cin>>t;
while(t--)
{
int n; cin>>n;
cnt=0;
vector<int> C; C.push_back(1);
for(int i=2;i<=n;i++)
{
C=mtl(C,i);
}
cout<<C.size()+cnt<<endl;
}
return 0;
}
用数论,套公式计算。
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int main(void)
{
int t; cin>>t;
while(t--)
{
int n; cin>>n;
double cnt=1;
for(int i=1;i<=n;i++)
{
cnt+=log10(i);
}
cout<<(int)cnt<<endl;
}
}
以上是关于1018 Big Number 简单数论的主要内容,如果未能解决你的问题,请参考以下文章