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 <stdio.h> 
#include <string.h> 
#include <math.h> 
 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; 

  }


  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值