给定某数字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 <stdio.h>
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;
}
版权声明:本文为yyyouzibin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。