首页 > 试题广场 >

数字阶梯求和

[编程题]数字阶梯求和
  • 热度指数:11801 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定a和n,计算a+aa+aaa+a...a(n个a)的和。

输入描述:
测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。


输出描述:
对于每组输入,请输出结果。
示例1

输入

1 10

输出

1234567900
#include <stdio.h>

int main() {
    int a, b;
    while (scanf("%d %d", &a, &b) != EOF) {
        int n[200]={0},k=0,carry=0;
        for(int i=b;i>0;i--){
            int reminder=a*i+carry;
            n[k++]=reminder%10;
            carry=reminder/10;
        }
        while(carry){
            n[k++]=carry%10;
            carry=carry/10;
        }
        for(int i=k-1;i>=0;i--) printf("%d",n[i]);
        printf("\n");
    }
    return 0;
}

编辑于 2024-03-06 15:42:25 回复(0)
#include <stdio.h>
#include <stdlib.h>

int main() {
    int a,n, carry = 0, carryf = 0;
    scanf("%d%d",&a,&n);

    int *num = (int *)malloc(sizeof(int) * (n+1));

    for(int i = 1; i <= n; i++){
        int tmp;

        if(carryf)
            tmp = a * (n - i + 1) + carry;
        else
            tmp = a * (n - i + 1);

        if(tmp >= 10){
            carryf = 1;
            num[i] = tmp % 10;
            carry = tmp / 10;
        }else{
            carryf = 0;
            num[i] = tmp % 10;
        }

    }

    for(int i = n; i >= 1; i--)
        printf("%d", num[i]);
    

    return 0;
}


编辑于 2024-01-14 20:19:18 回复(0)
#include <stdio.h>
#define N 1000
int main() {
    int a, n;
    while (scanf("%d%d", &a, &n)!=EOF) {
        int s[N] = {0}, carry = 0, i;
        for (i = 0; i < n; i ++) {
            int t = (n-i)*a+carry;
            s[i] = t%10;
            carry = t/10;
        }
        while (carry>0) {
            s[i] = carry%10;
            carry/=10;
            i ++;
        }
        i --;
        while (i>=0) {
            printf("%d", s[i--]);
        }
        printf("\n");
    }
    return 0;
}

发表于 2023-02-10 21:12:20 回复(0)