5-38 数列求和-加强版 (20分)

5-38 数列求和-加强版   (20分)

给定某数字AA1\le A\le 91A9)以及非负整数NN0\le N\le 1000000N100000),求数列之和S = A + AA + AAA + \cdots + AA\cdots AS=A+AA+AAA++AAANNAA)。例如A=1A=1N=3N=3时,S = 1 + 11 + 111 = 123S=1+11+111=123

输入格式:

输入数字AA与非负整数NN

输出格式:

输出其NN项数列之和SS的值。

输入样例:

1 3

输出样例:

123

#include  
#include  
#include  
 int main() 
{ 
 int A; 
 int N;
 int i; 
 int j; 
 int t; 
 int flag; 
 int num[1000000]; 
 scanf("%d%d",&A,&N); 
 if(N == 0) 
 printf("0\n"); 
 else 
 { 
      flag = 0; 
      for(i=N, j=0; i>=1; i--, j++) //这里一开始我不清楚j++的意思,后来分析结果是先逐个把位数相加,有进位就进位
       { 

            t = A*i + flag; 

            flag = t / 10; 

            num[j] = t % 10; 

        } 

         if(flag > 0)//最后一位进位还有的话再进一位
         { 
           num[j] = flag; //
           j++; 
         } 

       for(i=j-1; i>=0; i--) //之前一直都是反向输入  个十百千万。。先要换回万千百十个//特别注意j-1,因为之前最后一次多加了一位//其实我在考虑要不要换成1000001

        { 
            printf("%d",num[i]); 
        } 

  } 

    return 0; 

  }


你可能感兴趣的:(初级编程习题)