若number >= 10,需要再做mapping。
直到number < 10為止。
因為要算比例,不能超過100%。
所以會是a / b或b / a其中一種。
端看b > a或a > b。
/* ACM 10424 Love Calculator * mythnc * 2011/12/03 09:29:34 * run time: 0.004 */ #include <stdio.h> #define MAXCHAR 27 /* 25 + '\n' + '\0' */ double value(char *); int onedigit(int); int main(void) { char name[2][MAXCHAR]; double v[2]; int i; while (fgets(name[0], MAXCHAR, stdin)) { fgets(name[1], MAXCHAR, stdin); for (i = 0; i < 2; i++) v[i] = value(name[i]); if (v[0] >= v[1]) printf("%.2f %%\n", 100 * v[1] / v[0]); else printf("%.2f %%\n", 100 * v[0] / v[1]); } return 0; } /* value: return the value of name */ double value(char *s) { int i, sum; for (i = sum = 0; s[i] != '\n'; i++) if (s[i] >= 'a' && s[i] <= 'z') sum += s[i] - 'a' + 1; else if (s[i] >= 'A' && s[i] <= 'Z') sum += s[i] - 'A' + 1; while (sum > 9) sum = onedigit(sum); return (double)sum; } /* onedigit: make sure n is one digit */ int onedigit(int n) { int sum; for (sum = 0; n != 0;) { sum += n % 10; n /= 10; } return sum; }
沒有留言:
張貼留言