题目详情 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和。 输入描述: 测试数据有多组,以文件结尾。每行输入a,n(1<=a,n<=1000000)。 输出描述: 由于结果可能比较大,所以请输出答案mod 1000000007。 答题说明 输入样例: 1 10 输出样例: 234567893 参考思路:假设已求出k个连续的a对1000000007取模的结果result,那么k+1个连续的a对1000000007取模的结果 为(result×10^length + a)%1000000007,其中length为a的长度,详见代码。 通过了的源代码: #include <iostream> #include <vector> #include <stack> #include <algorithm> #include <string> #include <cstdio> #include <map> #include <queue> using namespace std; const int inf = 0x7fffffff; typedef __int64 lld; inline int myMin(int a, int b) { return a < b ? a : b; } inline int myMax(int a, int b) { return a > b ? a : b; } #define MOD 1000000007; int work(int a) { int result = 1; while(a!=0) { result *= 10; a /= 10; } return result; } int main() { int a, n; while(scanf("%d%d", &a, &n)!=EOF) { int num = work(a); lld res = 0; int i; lld k = 0; for(i=0; i!=n; i++) { k = a + (k*num)%MOD; k %= MOD; res += k; res %= MOD; } printf("%d\n", res); } return 0; }