zoukankan      html  css  js  c++  java
  • 7-38 数列求和-加强版(20 分)

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

    给定某数字A(1A9)以及非负整数N(0N100000),求数列之和S=A+AA+AAA++AAA(N个A)。例如A=1, N=3时,S=1+11+111=123。

    输入格式:

    输入数字A与非负整数N。

    输出格式:

    输出其N项数列之和S的值。

    输入样例:

    1 3
    

    输出样例:

    123

    这题刚刚接触感觉并不是很好理解,先手动模仿一个看看
    假设A=9 ,N=5
    9 9 9 9 9

    9 9 9 9
    9 9 9
    9 9
    9

    关键是可以把它们看成一列一列加,如果有进位则进位
    其次因为题目要求100000个数字,这个肯定是需要用数组来存储了,下面来看一下代码
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<math.h>
     4 #include <string.h>
     5 /*
     6 给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。
     7 例如A=1, N=3时,S=1+11+111=123。
     8 输入数字A与非负整数N。
     9 输出格式
    10 
    11 */
    12 
    13 int  main()
    14 {
    15     int p[100002] = {0};
    16     int a,n;
    17     int i,j;
    18     int t,fd=0; //中间转换变量 ,之前进位的数
    19 
    20     scanf("%d %d",&a,&n);
    21     if ( n==0 ){
    22         printf("0
    ");
    23         return 0;
    24     }
    25     j = 0;
    26     for( i=n; i>0; i--,j++){
    27         t = i*a + fd;
    28         fd = t/10;
    29         p[j] = t%10;
    30     }
    31     if( fd!=0 ){
    32         printf("%d",fd);
    33     }
    34     for( i=j-1; i>=0; i--){
    35         printf("%d",p[i]);
    36     }
    37     return 0;
    38 }








    在这个国度中,必须不停地奔跑,才能使你保持在原地。如果想要寻求突破,就要以两倍现在速度奔跑!
  • 相关阅读:
    汇编学习笔记(一)
    外部中断的资料
    喇叭的落幕
    红外模块
    SQL2005连接不上解决
    DataGrid中动态添加列,使用CheckBox选择行
    List和ObservableCollection的相互转化
    使用C#发送邮件
    C#委托与事件 简明
    Linq GroupBy 求和
  • 原文地址:https://www.cnblogs.com/yuxiaoba/p/8313501.html
Copyright © 2011-2022 走看看