给定一个大数n,计算从1加到n

测试多组数据

用字符串处理


#include<stdio.h>
#include<memory.h>
#include<string.h>
int main()
{
 char a[100],b[100];
 int c[100],sum[100];
 int i,j,t,k;
 while(scanf("%s",a)!=NULL)
 {
  t=strlen(a);
  memset(sum,0,400);
  memset(c,0,400);
  memset(b,'0',t);
  c[0]=1;
  while(strcmp(a,b)>=0)
  {
   j=0;
   for(i=t-1;i>=0;i--)
    b[j++]=c[i]+48;
   for(i=0;i<t;i++)
   {
    sum[i]+=c[i];
    if(sum[i]>=10)
    {
     sum[i]-=10;
     sum[i+1]++;
    }
   }
   c[0]++;
   for(i=0;i<t;i++)
   {
    if(c[i]>=10)
    {
     c[i]-=10;
     c[i+1]++;
    }
   }
  }
  k=0;
  for(i=99;i>=0;i--)
  {
   if(k)
    printf("%d",sum[i]);
   else
    if(sum[i])
    {
     printf("%d",sum[i]);
     k=1;
    }
  }
  printf("\n");
 }
 return 0;
}

posted on 2011-04-24 18:01  pcoda  阅读(186)  评论(0编辑  收藏  举报