1062

作者: 峡迩 | 来源:发表于2017-09-05 12:01 被阅读0次
    // 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;
    }
    
    

    相关文章

      网友评论

          本文标题:1062

          本文链接:https://www.haomeiwen.com/subject/tisujxtx.html