I am doing a problem about calcuating first digit of a^p form(a and p are non-negative integer. The total length of a^p never exceed 200). a and p may be a very large number. So I wanna make variable a to double type. and then a always range between 0 < a < 10. Like a = 1234 --> 1.234. But the answer is wrong explained by http://acm.hnu.cn:8080/online/?actio...=show&id=10695. Notice: The input and output field can be seperated itself.

I don't know what is the error here. if everyone know, please reply. Thanks.Code:#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_S 300 double str2double(char *s) { double a; int i; s[strlen(s)] = '\0'; if (strlen(s) > 1) { s[strlen(s)+1] = '\0'; for (i = strlen(s); i >= 2; i--) s[i] = s[i-1]; s[1] = '.'; } a = atof(s); return a; } int firstDigit(double a, int p) { int i; double x = a; for (i = 1; i < p; i++) { x *= a; if (x >= 10) x /= 10; } return (int)x; } int main() { char s[MAX_S]; int n, p, x, i; double a; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%s %d", s, &p); printf("%s\n", s); a = str2double(s); x = firstDigit(a, p); printf("%d\n", x); } return 0; }