4楼要对自己的发言负责,这跟等比有什么关系,代码也不对。以后要对自己发上来的代码负责,明显的sq中c都没初始化。
其他人的算法大同小异,基本是根据数列的定义在做累加。
其实稍微推导一下还可以更简化。由于32位整型的尺寸限制,最多只能正确计算到n = 9。再大的数要用64位整型,再大需要大数运算。
这里写一个32位范围内的算法供大家参考
程序代码:
其他人的算法大同小异,基本是根据数列的定义在做累加。
其实稍微推导一下还可以更简化。由于32位整型的尺寸限制,最多只能正确计算到n = 9。再大的数要用64位整型,再大需要大数运算。
这里写一个32位范围内的算法供大家参考
程序代码:#include<stdio.h>
int S(int a, int n)
{
const int c = 123456789;
const int e[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};
if(a < 0 || a > 9 || n <= 0 || n > 9) return -1; //error or overflow
return c / e[9 - n] * a;
}
int main()
{
int a, n, i, t;
printf("input a and n : ");
scanf("%d%d", &a, &n);
for(printf("%d", t = a), i = 1; i < n; i++) printf(" + %d", t = t * 10 + a);
printf(" = %d\n", S(a, n));
return 0;
}

重剑无锋,大巧不工









