void* vatoi(char *string) { int i; int len = strlen(string); static unsigned char inum[6] = {0};
for (i = 0; i < len; i++) { switch (string[i]) { case 'F': inum[i] = 0x0; break; default: inum[i] = string[i] - 0x30; break; } }
return (inum[i] = 0, inum); }
void* vitoa(int n) { int i = 2; static unsigned int anum = 0x393837;
while (n % 10) (((unsigned char *)(&anum))[i--] = n % 10 + 0x30, n /= 10);
return &anum; }
int calc_x_sq(int n) { return n * n; }
int main(int argc, char *argv[]) { int i, sum = 0, cnt = 0; #define BCCN_C_FORUM_USR "F65846" argv[0] = BCCN_C_FORUM_USR; #define RST_NUM 35 #define MAX_LOOP 125 while (sum != RST_NUM && cnt++ < MAX_LOOP) { argv[1] = (char *)vatoi(argv[0]); for (i = 0, sum = 0; i < strlen(argv[0]); i++) { sum += calc_x_sq(argv[1][i]); printf("sum = %d\n", sum); } argv[0] = vitoa(sum); }
return 0; }
output sample:
sum = 0
sum = 36
sum = 61
sum = 125
sum = 141
sum = 177
sum = 1
sum = 50
sum = 99
sum = 1
sum = 82
sum = 163
sum = 1
sum = 37
sum = 46
sum = 1
sum = 17
sum = 53
sum = 1
sum = 26
sum = 35
int main() { int n; scanf("%d", &n); if (n == 1 || n == 145) { printf("%d\n", n); return 0; }
int sum, i; while (1) { sum = 0; printf("%d->", n); while (n > 0) { i = n % 10; sum += i * i; n /= 10; printf("%d*%d%c", i, i, (n > 0) ? '+' : '='); } printf("%d\n", sum); n = sum; if (n == 1 || n == 145) break; } return 0; }