请问代码有什么问题,提交后只有73分
2条回答 默认 最新
- 索利亚噶通 2021-12-02 09:58关注
应该先对比例进行化简,避免越界, 如果a比n大, 比如n = 20, a:b = 100:200, 那么计算结果就是20 / 100 * 200 = 0, 但实际结果是40(有用点个采纳)
#include <iostream> using namespace std; // 辗转相除法 unsigned long long int getLCM(unsigned long long int a, unsigned long long int b) { int max = (a > b ? a : b); int min = (a < b ? a : b); int res = max % min; while (res) { max = min;//小的给大的 min = res;//余数给小的 res = max % min; } return min;//整除返回小的 } int main(){ unsigned long long int n, a, b, least_common_multiple, res; char c; cin >> n >> a >> c >> b; // 先将比例化简, 减小乘积之后的结果 // 找a, b的最小公倍数 least_common_multiple = getLCM(a, b); a /= least_common_multiple; b /= least_common_multiple; res = n / a * b; cout << res; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 解决websocket跟c#客户端通信
- ¥30 Python调用dll文件输出Nan重置dll状态
- ¥15 浮动div的高度控制问题。
- ¥66 换电脑后应用程序报错
- ¥50 array数据同步问题
- ¥15 pic16F877a单片机的外部触发中断程序仿真失效
- ¥15 Matlab插值拟合差分微分规划图论
- ¥15 keil5 target not created
- ¥15 C/C++数据与算法请教
- ¥15 怎么找志同道合的伙伴