zoukankan      html  css  js  c++  java
  • 九度OJ 1051:数字阶梯求和 (大数运算)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:6718

    解决:2280

    题目描述:

    给定a和n,计算a+aa+aaa+a...a(n个a)的和。

    输入:

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

    输出:

    对于每组输入,请输出结果。

    样例输入:
    1 10
    样例输出:
    1234567900
    来源:
    2010年哈尔滨工业大学计算机研究生机试真题

    思路:

    会超出long long的表示范围,典型的大数运算,注意循环的方式,第n位的数要加n-i次。

    sum[i] += a*(n-i);


    代码:

    #include <stdio.h>
     
    int main(void)
    {
        int n, a, i;
        unsigned int sum[100];
        int flag;
     
        while (scanf("%d%d",&a, &n) != EOF)
        {
            for (i=0; i<100; i++)
                sum[i] = 0;
     
            i = 0;
            do
            {
                sum[i] += a*(n-i);
                if (sum[i] >= 10)
                {
                    sum[i+1] += sum[i]/10;
                    sum[i] %= 10;
                }
                i++;
            } while(i<n);
     
            flag = 1;
            for (i=99; i>=0; i--)
            {
                if (flag)
                {
                    if (sum[i] == 0)
                        continue;
                    flag = 0;
                }
                printf("%d", sum[i]);
            }
            printf("
    ");
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1051
        User: liangrx06
        Language: C
        Result: Accepted
        Time:0 ms
        Memory:912 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    Matlab 画图
    OfferCome-0531
    OfferCome--0528
    剑指offer(2)
    剑指offer(1)
    MySQL的自增主键
    java Junit 测试
    sql 注入问题
    Facebook Libra
    markdown的博客
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083980.html
Copyright © 2011-2022 走看看