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; }
重剑无锋,大巧不工