连分数(百度2018校招)

来源:互联网 发布:win7 软件 乱码 编辑:程序博客网 时间:2024/06/05 08:49

这里写图片描述
这里写图片描述

题目的主要做法就是将这个分数的值计算出来,而考虑到float型数据不能完全表示,可以保存分子分母的格式:

#include <vector>#include <string>#include <iostream>#include <algorithm>using namespace std;void calc(vector<int> &nums, int &fenzi, int &fenmu) {    int n = nums.size() - 1;    for(int i = n; i > 0; --i) {        fenzi = fenzi + nums[i] * fenmu;        swap(fenzi, fenmu);    }    fenzi = nums[0] * fenmu + fenzi;}int main(){    int n,m;    cin>>n;    int num;    vector<int> x,y;    for(int i=0;i<=n;i++){        cin>>num;        x.push_back(num);    }    cin>>m;    for(int j=0;j<=m;j++){        cin>>num;        y.push_back(num);    }    int fenzi1=0,fenmu1=1;    int fenzi2=0,fenmu2=1;    cal(x,fenzi1,fenmu1);    cal(y,fenzi2,fenmu2);    if(fenzi1*fenmu2==fenmu1*fenzi2){        cout<<'=';    }else if(fenzi1*fenmu2>fenmu1*fenzi2){        cout<<'>';    }else{        cout<<'<';    }    return 0;}
原创粉丝点击