PTA 7-38 数列求和-加强版 (20分)

给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。

输入格式:

输入数字A与非负整数N。

输出格式:

输出其N项数列之和S的值。

输入样例:

1 3

输出样例:

123

#include 

int main()
{
     
	int A;
	int N;
	scanf("%d %d",&A,&N);//输入数字A与非负整数N 
	
	int a[200000]={
     0,};//定义一个数组并让全部元素为0 
	
	int t=N;                      //定义一个元素t存住N的值 
	int m=0;                      //后面用来进位 
	int i;
	if(A==0 || N==0)
	printf("0");                  //A或N为0的话可以直接输出 
	else
	{
                                 //A和N都不为0时进行以下操作 
	for(i=0;i<N;i++)
	{
     
		a[i]=t*A+m;              //等于有N个A相乘,t是A的值 
		t--;                     //例如:111 11 1三个数  最后一位是三个1相乘  下一位是两个  所以减一 
		m=0;                     //如果这个位数不大于9是不用进位的 
		if(a[i]>9)
			{
     
  			m=a[i]/10;           //例如算出来25,下一位是要进2的;所以让m等于25/10 
			a[i]=a[i]%10;
			if(i==N-1)           //如果a[i]大于9的话,说明还有下一位数,所以还要继续 
			N++;
			}
	}
	
	for(i=N-1;i>=0;i--)
	{
     
		printf("%d",a[i]);       //逆序输出 
	}
}
	return 0;
}

你可能感兴趣的:(算法,数据结构,c语言)