习题4-4 特殊a串数列求和 (20分)
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。
输入格式:
输入在一行中给出不超过9的正整数a和n。
输出格式:
在一行中按照“s = 对应的和”的格式输出。
输入样例:
2 3
输出样例:
s = 246
第一次运行:
#include <stdio.h>
#include <math.h>
int main()
{
int a,n,sum,item;
item=a;
sum=0;
scanf("%d %d",&a,&n);
if(a>=0&&n>=0&&a<=9&&n<=9){
for(int i=1;i<=n;i++){
if(i=1){
item=a;
}else{
item=a*pow(10,i-1)+item;
}
sum+=item;
}
}
printf("s = %d",sum);
return 0;
}
系统提示运行超时,在软件运行时也得不到结果。出错原因可能是循环太多导致运行时间太长。
改进后:
#include <stdio.h>
#include <math.h>
int main()
{
int a,n,sum,item;
item=0;
sum=0;
scanf("%d %d",&a,&n);
if(a<=9&&n<=9){
for(int i=1;i<=n;i++){
item=a*pow(10,i-1)+item;
sum+=item;
}
}
printf("s = %d",sum);
return 0;
}