/* ACM 834 Continued Fractions
* mythnc
* 2011/12/06 12:05:34
* run time: 0.012
*/
#include <stdio.h>
#define MAXK 1000
int cal(int, int, int *, int);
void print(int *, int);
int main(void)
{
int a, b, count;
int answer[MAXK];
while (scanf("%d %d", &a, &b) == 2) {
count = 0;
if (a < b)
answer[count++] = 0;
count = cal(a, b, answer, count);
print(answer, count);
}
return 0;
}
/* cal: find n and save it in ans
* return the numbers */
int cal(int a, int b, int *ans, int count)
{
while (a != 0 && b != 0)
if (a > b) {
ans[count++] = a / b;
a %= b;
}
else {
ans[count++] = b / a;
b %= a;
}
return count;
}
/* print: print out result */
void print(int *ans, int n)
{
int i;
if (n == 1) {
printf("[%d]\n", ans[0]);
return;
}
printf("[%d;%d", ans[0], ans[1]);
for (i = 2; i < n; i++) {
printf(",%d", ans[i]);
}
printf("]\n");
}
20111206
ACM 834 Continued Fractions
做輾轉相除法!
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言