美国计算机协会国际大学程序设计竞赛亚洲地区D亨利
ACM International Collegiate Programming Contest Asia Regional D Henry
给定分数a / b
,其中a
和b
为正整数,a < b
,选择最大的单位分数1 / x_1
,使1 / x_1 <= a / b
。然后从a / b
中减去1 / x_1
,并对剩余部分重复此过程:选择最大的单位分数1 / x_2
,使1 / x_2 <= (a / b) - (1 / x_1)
。重复一遍,直到没有余数。这个过程将产生一系列单位分数1 / x_1, 1 / x_2, 1 / x_3, ...
,这些分数加起来等于给定分数a / b
。对于任何输入分数a / b
,该过程总是以有限数量的不同单位分数终止。编写一个程序,输出结果序列中最后一个分数的分母。
例子:
5/7 = 1/2 + 1/5 + 1/70
样本输入:3
4 23
5 7
8 11
输出:138
70
4070
代码:
我的代码是c++语言
#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();
}
我认为我的算法是正确的,但是我的学校评分系统说它超过了运行时间限制。我不知道为什么。
您可能忘记在每一步中将mom
和son
除以它们的最大公约数(GCD)。这可能会让某些示例永远运行或比预期运行的时间更长。检查一下问题是否出在这里。另外,为什么使用double
类型的son
和mom
?分数的分子和分母应该是整数。如果它们可以是非常大的整数,只需使用unsigned long int
或size_t
(在c++中同义)。double
数据类型没有size_t
那么多有效数字
相关文章:
- 桌面计算器出现问题.C++程序设计语言
- C++Qt程序设计问题
- 嵌入式设备中传感器应用程序设计体系结构
- 关于多态性和资源管理的程序设计
- 视图状态和应用程序设计
- C++面向对象的客户端套接字应用程序设计
- 程序设计方法
- 关于异常规范和应用程序设计的问题
- 为什么我的程序设计为用完 RAM 和 CPU 不使用所有 RAM 和 CPU?
- 具有多态性和不同数据结构的程序设计
- ROS程序设计:向前推进
- C++网络程序设计:Boost Asio、Serialization和OStream
- 良好的程序设计/避免多重冗余检查的最佳实践(例如在C++中)
- 在不影响现有C或c++应用程序设计的情况下添加新的职责
- Windows Mobile c++ -应用程序设计类问题
- (程序设计语言C/C++)中的格式值类型float
- C/ c++程序设计中的一个问题
- 美国计算机协会国际大学程序设计竞赛亚洲地区D亨利
- C++如何加快我的程序设计
- 在c++windows中进行客户端-服务器程序设计的多线程