1534 - 数字阶梯求和

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

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

题目输入

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

题目输出

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

输入/输出样例

输入格式

6 7

输出格式

7407402

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;
}

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;
}

Java解答

public class Main {
  public static void main(String[] args) { 
  java.util.Scanner in= new java.util.Scanner(System.in) ;
  while(in.hasNextInt()){
  int a=in.nextInt();
  int n=in.nextInt();
  String sum="";
  int k =0;
  for(int i=n;i>=1;i--){
  int m=i*a+k;
  int s=m%10;
  sum=(char)(s+48)+sum;
  k=m/10;
} if(k!=0)
  sum=Integer.toString(k)+sum;
  System.out.println(sum);
}
}
}