给定某数字A (1<4< 9) 以及非负整数V (0 N<100000)求数列之和S =A+AA+ AAA+..+AA···A(N个A)。例如A =1,N = 3时,S 1+ 1 +111 =123。
输入格式
输入数字A与非负整数N;
输出格式
整数
思路:暴力解法显然不可行,会整数溢出,假如先从个位算起,N*A<1000000,算完把N*A的个位压入栈中,另取一个变量m存下N*A除去个位的值,然后再算十位上的值(N-1)*A,加上m再将个位压入栈中,再另m存入个位除外的值,百位,千位……N位,将栈弹出就是和。
代码:
class He {
public:
stack<int> count(int A, int N) {
stack<int>a;
int m = 0, n = N;
while (a.size() < N) {
a.push((m + A * n) % 10);
m = (m + A * n) / 10;
n--;
}
if (A > 8)
a.push(m);
return a;
}
};
A=9时,我暂时没有更好的思路,只能最后再将m压入栈。