()POJ 1503 大整数加分 超时了


有解决呀。

#include<stdio.h>
#include<string.h>
#define bool int
#define false 0
#define true 1
  
int main()
{
	
	int nlen1;   //len1,len1的长度
	int len1[200],sum[200];
	int i,j;
	char a[200];
	int bStartOutput=false;
	//freopen("in.txt","r",stdin);  
    memset(sum,0,sizeof(sum));

	while(scanf("%s",a)&&*a!='0')
	{
	
		memset(len1,0,sizeof(len1));
	
		nlen1=strlen(a);
		j=0;
		for(i=nlen1-1;i>=0;i--)
			len1[j++]=a[i]-'0';	

		for(i=0;i<=nlen1;i++)
		{
			sum[i]=sum[i]+len1[i];
			if(sum[i]>=10)
			{
				sum[i]-=10;
				sum[i+1]=sum[i+1]+1;
			}
		}
		
	}
		
	



     for(i=nlen1+1; i >= 0; i -- )
     {
          if( bStartOutput)
               printf("%d", sum[i]); //如果多余的0 已经都跳过
          else
               if( sum[i] )
               {
                    printf("%d", sum[i]);
                    bStartOutput = true; //碰到第一个非0 的值,就说明多余的
               }
     }
	 printf("\n");

     if(bStartOutput==false)
          printf("0\n");
   

	return 0;

}


你可能感兴趣的:(()POJ 1503 大整数加分 超时了)