游客 Signup | Login
中文 | En

1534 - 数字阶梯求和

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

Input

测试数据有多组,输入a,n(1<=a<=9,1<=n<=100)。

Output

对于每组输入,请输出结果。

Examples

Input

6 7

Output

7407402

Hint

注意数据类型的范围是否够用。如果不够用,则应该用字符串来模拟运算。

Solution C

#include<stdio.h>
#include<string.h>
int main()
{
	int a,n,x,i,l;
	int qq[100];
	while(scanf("%d%d",&a,&n)!=EOF)
	{
		l=0;
		x=n;
        int tt[200]={0};
		while(n)
		{
			memset(qq,0,sizeof(int)*100);
			for(i=n-1;i>=0;i--)
			{
				qq[i]=a;
			}
			for(i=0;i<n;i++)
			{
				tt[i]+=qq[i];
			}
			n--;
		}
		for(i=0;i<200;i++)
		{
			if(tt[i]>=10)
			{
				tt[i+1]+=tt[i]/10;
				tt[i]%=10;
			}
		}
		for(i=199;i>=0;i--)
		{
			if(tt[i]!=0)l=1;
			if(l==1)printf("%d",tt[i]);
		}
		printf("\n");
	}
	return 0;
}

Solution C++

#include<stdio.h>
#include<string.h>

void Add(char *str1,char *str2,char *str3)
{
	int i,j,i1,i2,tmp,carry;
	int len1=strlen(str1),len2=strlen(str2);
	char ch;
	i1=len1-1;
	i2=len2-1;
	j=carry=0;
	for(;i1>=0&&i2>=0;++j,--i1,--i2)
	{
		tmp=str1[i1]-'0'+str2[i2]-'0'+carry;
		carry=tmp/10;
		str3[j]=tmp%10+'0';
	}
	while(i1>=0)
	{
		tmp=str1[i1--]-'0'+carry;
		carry=tmp/10;
		str3[j++]=tmp%10+'0';
	}
	while(i2>=0)
	{
		tmp=str2[i2--]-'0'+carry;
		carry=tmp/10;
		str3[j++]=tmp%10+'0';
	}
	if(carry)
		str3[j++]=carry+'0';
	str3[j]='\0';
	for(i=0,--j;i<j;++i,--j)
	{
		ch=str3[i];
		str3[i]=str3[j];
		str3[j]=ch;
	}
}

int main()
{
	char s[200],t[200],ans[200];
	int n,i,l;
	while(scanf("%s%d",&s,&n)!=EOF)
	{
		strcpy(ans,s);
		for(i=2;i<=n;i++)
		{
			l=strlen(s);
			s[l]=s[0];
			s[l+1]='\0';
			Add(ans,s,t);
			strcpy(ans,t);
		}
		puts(ans);
	}
	return 0;
}

Hint

注意数据类型的范围是否够用。如果不够用,则应该用字符串来模拟运算。

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题