2 qq 34078712 qq_34078712 于 2016.04.17 17:05 提问

杭电3555题 为啥总是Output Limit Exceeded

3555
这是我的代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
long long f[20][3];
long long cal(long long n)
{
long long num[20],len=1,i,j,k,sum,flag,before;
num[0]=0;
num[1]=0;
while(n)
{
num[len]=n%10;
len++;
n=n/10;
}
num[len]=0;sum=0;flag=0;
for(i=len-1;i>0;i--)
{
sum=sum+f[i-1][2]*num[i];
if(flag)
sum=sum+f[i-1][0]*num[i];
if(!flag&&num[i]>4)
sum=sum+f[i-1][1];
if(num[i+1]==4&&num[i]==9)
flag=1;
}
return sum;
}
int main()
{
long long n,m,i,j,k,t,sum;
memset(f,0,sizeof(f));
f[0][0]=1;
for(i=1;i<=20;i++)
{
f[i][0]=f[i-1][0]*10-f[i-1][1];
f[i][1]=f[i-1][0];
f[i][2]=f[i-1][2]*10+f[i-1][1];
//cout<<f[i][2]<<endl;
}
while(scanf("%lld",&t))
{
for(i=1;i<=t;i++)
{
//cout<<"skjhgs"<<endl;
scanf("%lld",&m);
sum=cal(m+1);
printf("%lld\n",sum);
}
}
return 0;
}

1个回答

caozhy
caozhy   Ds   Rxr 2016.04.17 18:18
已采纳
qq_34078712
qq_34078712 为啥会输出超限呢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!