出处:桂电oj,网址:http://onlinejudge.guet.edu.cn/guetoj/problem/1020.html 有这样一类数列,例如,2, 22, 222, 2222, 22222, 2222223, 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 53 7
Sample Output
246903703701 //------------------------------------------------------------- //当输入的数为2 11 时,一般的的int double的存不了的,要用数组, //思路: /* 2 * 22 * 222 * 2222 * ... *+22222222 *———————————— *= ? * */ //各位数相加,进位与十位相加... #includeusing 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++; } } }