解题思路:
//考察gcd性质,根据更相减损术可以知道一个等式:gcd(a,b)=gcd(a,b-a) 当然这里的前提时a<=b;
//所以gcd(a+k,b+k)=gcd(a+k,b-a) 这里的a和b都是已知的
//我们可以设c=b-a 即c是已知的 所以想要使得a+k与c的最大公因子尽可能地大 因为最大最大能到达c
//显然这个式子的最大gcd一定为 c ,我们只需要计算出a 最少需要增加多少可以成为 c 的倍数,这个增量即是答案k
注意事项:
参考代码:
#include<iostream>
using namespace std;
long long a,b,c,g;
int main()
{
cin>>a>>b;
if(a>b) swap(a,b);
c=b-a;
g=a/c;
if(a%c) g++;
cout<<g*c-a<<endl;
}
0.0分
15 人评分
printf基础练习2 (C语言代码)浏览:942 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:592 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:703 |
C二级辅导-阶乘数列 (C语言代码)浏览:692 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:326 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2092 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:617 |
敲七 (C语言代码)浏览:2701 |
找出最长的字符串来 (C语言代码)浏览:1770 |