66 lines
1.0 KiB
C
66 lines
1.0 KiB
C
/*
|
|
Problem CF -- непрерывные дроби
|
|
|
|
Вам на вход приходят числитель и знаменатель дроби.
|
|
|
|
Ваша задача: написать программу выдающую на стандартный вывод представление цепной дробью.
|
|
|
|
Пример 1
|
|
|
|
Ввод: 1 3
|
|
Вывод: 0 3
|
|
|
|
Пример 2
|
|
|
|
Ввод: 43 19
|
|
Вывод: 2 3 1 4
|
|
|
|
Пример 3
|
|
|
|
Ввод: 345 678
|
|
Вывод: 0 1 1 27 1 3
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <assert.h>
|
|
|
|
#define ull unsigned long long
|
|
|
|
void cf(ull x, ull y);
|
|
|
|
int main() {
|
|
ull x = 0, y = 0;
|
|
int res;
|
|
|
|
res = scanf("%llu %llu", &x, &y);
|
|
assert(res == 2);
|
|
|
|
cf(x, y);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void cf(ull x, ull y) {
|
|
// ull a = (x > y) ? x : y;
|
|
// ull b = (x < y) ? x : y;
|
|
|
|
ull a = x;
|
|
ull b = y;
|
|
|
|
// printf("a = %llu, b = %llu", a, b);
|
|
|
|
ull q = a / b;
|
|
ull r = a % b;
|
|
printf("%llu ", q);
|
|
|
|
while (r > 0) {
|
|
a = b;
|
|
b = r;
|
|
q = a / b;
|
|
r = a % b;
|
|
// printf("a = %llu, b = %llu", a, b);
|
|
printf("%llu ", q);
|
|
}
|
|
}
|
|
|