zoukankan      html  css  js  c++  java
  • 数列之和

    出处:桂电oj,网址:http://onlinejudge.guet.edu.cn/guetoj/problem/1020.html
    有这样一类数列,例如, 2, 22, 222, 2222, 22222, 222222 3, 33, 333, 3333, 33333, 333333, 333333等 其中每个数的各位数上的值相同,例如,2,3,可以用M来表示 且每个数列所包含的数的个数不相同,可以用N来表示 你需要编写程序完成如下形式的数列求和 其中数列中每个数各位数的值M,以及数列所包含的数的个数N由键盘输入 求有M和N所决定的数列的和,并将其和输出

    Input

    输入包含2个数,M和N
    其中M表示数列中每个数各位数上的值,N表示数列包含的数的个数
    我们确保测试时( 0 < M < 10, 0 < N < 15 )

    Output

    输出由M和N所确定的数列之和

    Sample Input

    2 5
    
    3 7

    Sample Output

    24690
    
    3703701
    //-------------------------------------------------------------
    //当输入的数为2 11 时,一般的的int double的存不了的,要用数组,
    //思路:
    /*       2
    *       22
    *      222
    *     2222
    *      ...
    *+22222222
    *————————————
    *= ?
    *
    */
    //各位数相加,进位与十位相加...
       
    #include <iostream>
    using namespace std;
    void shulie_sum(int a,int b);
    int main()
    {
        int M,N;
        cin >> M >> N;
        shulie_sum(M,N);
        return 0;
    }
    void shulie_sum(int a,int b)
    {
        int c = 0;int sum[16] = {0};
        int s = 0;
        for (int i = 0; i < 16; i++)
        {
           if (b == 0)
               break;
           sum[15-i] = (a*b) % 10 + s;//个位相加
           if ((sum [15-i]) >= 10 && b != 1)//个位大于=10,进位
           {
                sum [15-i] = ((a*b)%10 + s )% 10;
           }
           s = (s + (a*b) ) / 10;
           b--;
        }
        for (int i = 0; i < 16; )
        {
            if (sum[i] == 0)
            {
                i++;
            }
            else
                for (int j = i; j < 16;j++)
            {
                cout << sum [i];
                i++;
            }
        }
    }
  • 相关阅读:
    如何有效的写算法题的几个小tips
    题目
    记录加入博客园,申请开通cnblog
    关于套接字socket程序参数设置
    int main (int argc, const char * argv[0])及指针数组与数组指针
    sleep函数
    signal函数
    C htonl()函数
    位域unsigned char a:4
    关于TCP和UDP的一个理解
  • 原文地址:https://www.cnblogs.com/ediszhao/p/3481449.html
Copyright © 2011-2022 走看看