数列之和

出处:桂电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++;
        }
    }
}
posted @ 2013-12-19 09:03  ediszhao  阅读(1254)  评论(0编辑  收藏  举报