Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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++ Gcd在该代码中是如何工作的?_C++_Greatest Common Divisor - Fatal编程技术网

C++ Gcd在该代码中是如何工作的?

C++ Gcd在该代码中是如何工作的?,c++,greatest-common-divisor,C++,Greatest Common Divisor,我试着解决一个关于黑客的问题,但我没能解决,所以我看了社论。他们只给出了代码,没有解释。你能解释为什么gcd在这里使用的逻辑吗 问题: int main() { int T; cin>>T; while(T--) { long long N,A,B; cin>>A>>B>>N; long long g=gcd(B,N); cout<<N/g<<endl; } return 0

我试着解决一个关于黑客的问题,但我没能解决,所以我看了社论。他们只给出了代码,没有解释。你能解释为什么gcd在这里使用的逻辑吗

问题:

int main()
{
int T;
cin>>T;
while(T--)
{
    long long N,A,B;
    cin>>A>>B>>N;
    long long g=gcd(B,N);
    cout<<N/g<<endl;     
    }
return 0;
}
史酷比和他的所有朋友都聚在一起参加聚会。有N个朋友在场。史酷比真的很高兴在一个地方看到他的所有朋友,并很兴奋地迎接他们

所有的N个朋友都坐在一个圆圈里,编号从0到N-1。史酷比最初坐在他的朋友旁边。在问候一位朋友后,他顺时针走到下一位朋友身边,坐在他旁边向他打招呼。他重复这个直到他回到朋友身边

在兴奋中,史酷比可能错过了与朋友的问候。你的工作是找到史酷比在回到A之前问候过的朋友(包括A)的数量

给出的解决方案:

int main()
{
int T;
cin>>T;
while(T--)
{
    long long N,A,B;
    cin>>A>>B>>N;
    long long g=gcd(B,N);
    cout<<N/g<<endl;     
    }
return 0;
}
intmain()
{
int T;
cin>>T;
而(T--)
{
长N,A,B;
cin>>A>>B>>N;
长g=gcd(B,N);

cout为了解释上述问题的解决方案,我将首先说明答案是-
LCM(B,N)/B
,然后说明这如何等于
N/GCD(B,N)


第一部分-
现在假设,当它按照上述步骤再次到达
A
时,他会向
f
朋友打招呼。(注意,通过上述过程打招呼的两个朋友不可能是同一个)。此外,假设当他到达
A
时,他会绕圆圈转
r

现在我们可以说-
f*B=r*N=C

让它等于某个常数
C
。显然,C是
B
N
的倍数,而且,它是
B
N
的最小公倍数(LCM)。
因此
f=LCM(B,N)/B
。注意f是他问候的朋友的数量,因此这是必需的答案。

第二部分-
对于两个正整数
a
b
及其GCD和LCM
g
l
,我们有以下关系-
a*b=g*l

从上面的关系我们可以说-
LCM(B,N)*GCD(B,N)=B*N

=>LCM(B,N)/B=N/GCD(B,N)



最后我们得到了我们的答案=
LCM(B,N)/B
=
N/GCD(B,N)

欢迎使用堆栈溢出。请花时间阅读并参考“您可以在此处询问什么和如何提问”中的资料。解决此类问题的正确工具是调试器。在询问堆栈溢出问题之前,您应该逐行检查代码。要获得更多帮助,请阅读。至少,您应该将问题包含在e一个重现您的问题的示例,以及您在调试器中所做的观察。@πάνταῥεῖ 调试器如何帮助他理解为什么GCD在这段代码中工作?OP提到了解决方案代码,它的作用类似于MCV。你知道什么意思吗?我知道如何找到GCD,它的意思是什么,但它在这里是如何工作的?