在一条水平直线上依次放着 N 个半径大小不同的圆环(从左到右依次编号为 1 到 N)。每一个圆环跟它的前一个圆环和后一个圆环接触(除第一个和最后一个),如下图所示。
当顺时针推动第一个环(最左边的环)时,由于摩擦力的作用后面的环依次跟着转动,转动的方向如上图所示,转动的速度由于半径的不同而不同。
编程确定当第一个环转动一圈时, 后面的环各转动了多少圈。 注意, 转动的圈数不一定正好是整数。
#include<bits/stdc++.h>
using namespace std;
int n,a[105],at,bt,r;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=2;i<=n;i++)
{
at=a[1],bt=a[i],r=max(a[i],a[1])%min(a[i],a[1]);
if(at>bt)swap(bt,at);
while(r!=0)
{
bt=at;
at=r;
r=bt%at;
}
cout<<a[1]/at<<"/"<<a[i]/at<<endl;
}
return 0;
}
自己理解☺