Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ACM国际大学生编程竞赛亚洲地区D亨利_C++_Algorithm - Fatal编程技术网

C++ ACM国际大学生编程竞赛亚洲地区D亨利

C++ ACM国际大学生编程竞赛亚洲地区D亨利,c++,algorithm,C++,Algorithm,给定一个分数a/b,其中a和b是正整数,a>子; 文件>>妈妈; 而(儿子!=1) { a=(int)(母亲/儿子)+1; 儿子=(儿子*a)-母亲; 妈妈=妈妈*a; } 你可能忘了用最大公约数(GCD)除以妈妈和儿子在每一步中。这可能会让某些示例永远运行或比预期的时间更长。检查这是否是问题所在。此外,为什么对son和mom使用double类型?分数的分子和外延应该是整数。如果它们可以是非常大的整数,只需使用无符号长整数即可或size\u t(在c++中是同义词)。double数据类型没有那么

给定一个分数
a/b
,其中
a
b
是正整数,
a
,选择最大的单位分数
1/x_1
,以便
1/x_1测试用例;
while(测试用例--)
{
文件>>子;
文件>>妈妈;
而(儿子!=1)
{
a=(int)(母亲/儿子)+1;
儿子=(儿子*a)-母亲;
妈妈=妈妈*a;
}

你可能忘了用最大公约数(GCD)除以妈妈和儿子在每一步中。这可能会让某些示例永远运行或比预期的时间更长。检查这是否是问题所在。此外,为什么对
son
mom
使用
double
类型?分数的分子和外延应该是整数。如果它们可以是非常大的整数,只需使用
无符号长整数即可
size\u t
(在c++中是同义词)。
double
数据类型没有那么多有效数字,因为
size\u t

son
可能非常接近
1
,但并不完全等于
1
。您可能需要将其与一个小范围进行比较(如
abs(son-1.0)<0.0001
或其他。使用调试器逐行检查代码。感谢您的建议,编辑它会有很大帮助感谢您的建议。处理GCD后,它解决了问题,我将更改变量类型谢谢
5/7 = 1/2 + 1/5 + 1/70
3 
4 23
5 7
8 11
138
70
4070
#include <iostream>
#include <fstream>
using namespace std;
int testCase;
double a;
double son;
double mom;

int main()
{
    ifstream file("input.txt");
    file >> testCase;

    while (testCase--)
    {
        file >> son;
        file >> mom;

        while (son != 1)
        {
            a = (int)(mom / son) + 1;
            son = (son * a) - mom;
            mom = mom * a;
        }
        cout << mom << endl;
    }
    file.close();
}