题目详情
给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和。
输入描述:
测试数据有多组,以文件结尾。每行输入a,n(1<=a,n<=1000000)。
输出描述:
由于结果可能比较大,所以请输出答案mod 1000000007。
答题说明
输入样例:
1 10
输出样例:
234567893
由公式可以发现,后一个数可以由前一个推出,前一个数乘以10*pow(10,a的位数),就可以得到后一个数。
代码:
#include <iostream>
#include <cstdio>
using namespace std;
const int mod=1000000007;
int main()
{
long long a,b,c,ans,n,m,temp;
while(~scanf("%I64d%I64d",&a,&n))
{
m=0;
temp=a;
while(temp)
{
m++;
temp=temp/10;
}
c=1;
for(long long i=1;i<=m;i++)
c=c*10;
ans=a%mod;
b=a%mod;
for(long long i=2;i<=n;i++)
{
b=(b*c+a)%mod;
ans=(ans+b)%mod;
}
printf("%I64d\n",ans);
}
return 0;
}