厦门大学线下编程比赛第一题:求和

  • 编程语言要求:Java C# C C++
  • 难度等级:
  • 有效期: 2014-11-05 至 2015-12-05
  • 答题时长:120分钟

给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和。

输入描述:

测试数据有多组,以文件结尾。每行输入a,n(1<=a,n<=1000000)。

输出描述:

由于结果可能比较大,所以请输出答案mod 1000000007。

题目来源

此题由本人AC通过,有疑问请联系fjinhao@qq.com,欢迎来此讨论交流

本题解题在求和时,第一个数为a,后一个数=前一个数a+10*10^a的位数

#include <stdio.h>
#define mod 1000000007

int main(void)
{
	long long a,n;
	long long t,m,c, i,result,k;
	while ( 2 == scanf("%I64d%I64d",&a,&n) )
	{
		c = 0;
		t = a;
		while(t)
		{
			c++;
			t /= 10;
		}
		m = 1;
		for ( i=1; i<=c; i++)
		m *= 10;
		result = a % mod;
		k = a % mod;
		for ( i =2; i<=n; i++ ) {
			k = ( k*m + a)%mod;
			result = (result + k)%mod;
		}
		printf("%d
",result);	
	}
	
	return 0;
}



原文地址:https://www.cnblogs.com/fayne/p/7224837.html