1062

// PATn.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
#include<cmath>

using namespace std;

double get_value(string &s)
{
    if (s.find("/") != string::npos)
    {
        auto i = s.find("/");
        double s_n = stod(s.substr(0, i));
        double s_m = stod(s.substr(i + 1, string::npos));

        return (s_n / s_m);
    }
    else
        throw("Error");
}

bool check(int a, int b)
{
    bool flag = true;
    for (int i = 2; i <= a; ++i)
    {
        if ((a%i) == 0)
        {
            if ((b%i) == 0)
                flag = false;
        }
    }
    return flag;
}

int main()
{
    string s1, s2, s3;
    cin >> s1 >> s2 >> s3;

    double d1 = get_value(s1);
    double d2 = get_value(s2);

    if (d2 < d1)
    {
        double tmp = d1;
        d1 = d2;
        d2 = tmp;
    }

    double m = stod(s3);

    vector<double> n;
    double min = floor(d1*m)+1; //d*m,算出来的就是n的范围()!
    double max =ceil(d2*m); //double转int,小数部分直接被丢弃!若使用ceil,1.0转换为1.0!

    for (double n_tmp = min; n_tmp < max; ++n_tmp)
    {
        if (check(n_tmp, m) &&(n_tmp/m)!=d1 && (n_tmp/m)!=d2)
            n.push_back(n_tmp);
    }

    for (size_t i = 0; i < n.size(); ++i)
    {
        cout << n[i] << "/" << m;
        if (i != (n.size() - 1))
            cout << " ";
    }

    system("pause");
    return 0;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘要:runtime、kvo、selectedIndex 在开发公司的一个项目时,遇到一个说正常也正常,说奇葩也奇...
    独孤流阅读 10,858评论 8 4
  • 我时常是不逛街的,况且乌市的老街大都在现代化建设的洪流里被淹没了。而我又是个很怀旧的人,每...
    遗世之叶阅读 2,325评论 0 0
  • 最近几日越发觉得无所适从。走在哪里都不觉得是自己的地儿。从家里,到工作室里,到公司里,感觉我每天都无处可去。心里有...
    晨风13阅读 1,261评论 0 4
  • 尽量不想提到坏处是人之常情,但是让我们换一个角度思考一下。也就是让我们积极地向对方展示坏处。 这样对方就会觉得你是...
    Fly_Catkin阅读 4,332评论 0 0