问题链接:UVa834 Continued Fractions。
问题简述:参见上述链接。
问题分析:
这是一个分数转换为连分数的问题。
需要了解和掌握有关连分数的概念与表示方式,可以查看中英文版的维基百科的“连分数”。
剩下的就是简单的分数计算问题了。程序说明:
需要考虑特例的情况,例如,分数实际上是整数的情况。
程序中不考虑约分的问题。
程序中的迭代计算过程尽可能地简洁。
题记:把功能封装到函数是一种好的做法,程序逻辑更加简洁。
AC的C++语言程序如下:
/* UVa834 Continued Fractions */
#include <iostream>
using namespace std;
void fraction2continuedfraction(int n, int d)
{
int nextd;
char separator = ';';
if(n % d == 0)
printf("[%d]\n", n / d);
else {
printf("[");
printf("%d", n / d);
nextd = n % d;
n = d;
d = nextd;
while(d != 0) {
printf("%c", separator);
printf("%d", n / d);
nextd = n % d;
n = d;
d = nextd;
separator = ',';
}
printf("]\n");
}
}
int main()
{
int n, d;
while(cin >> n >> d) {
fraction2continuedfraction(n, d);
}
return 0;
}