求a+aa+aaa+aa......a

来源:百度知道 编辑:UC知道 时间:2024/06/09 19:44:02
程序填空,不要改变与输入输出有关的语句。
输入2 个正整数a 和n, 求a+aa+aaa+aa⋯a(n 个a)之和。
例:括号内是说明
输入
2 3 (a=2, n=3)
输出
246 (2+22+222)
输入
8 5 (a=8, n=5)
输出
98760 (8+88+888+8888+88888)

#include <stdio.h>
void main()
{
int i, n;
long int a, sn, tn;
scanf("%ld%d", &a, &n);
/*---------*/
printf("%ld\n",sn);
}

搞定
---------------
sn=tn=a;
for(i=1;i<n;i++){
tn=tn*10+a;
sn=sn+tn;
}

如果a只是一位数的话:

#include <stdio.h>
#include <math.h>
int main()
{
int a,n,sn;
scanf("%d%d",&a,&n);
sn=a*(10*(pow(10,n)-1)/9-n)/9;
printf("%d",sn);
}

如果a可能是多位数
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
long a,n,sn,q=1;
scanf("%ld%ld",&a,&n);

char str[21];
sprintf(str,"%d",a);
q=pow((double)10,(int)strlen(str));
sn=a*(q*(pow((double)q,n)-1)/(q-1)-n)/(q-1);

printf("%ld",sn);
}

下面是用递归做的
int su(int a,int n){
if(n==1) return a;
else return su(a,n-1)*10+a;
}
int f(int a,int n){
if(n==1) return a;
else return(f(a,n-1)+su(a,n));
}
void main(){
int i, n;