1 条题解

  • 0
    @ 2025-8-24 22:19:39

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar VincentXu
    菩提本无树,明镜亦非台。(已退役)

    搬运于2025-08-24 22:19:39,当前版本为作者最后更新于2020-04-10 15:24:46,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    传动比(类似)

    设有两个圆环,半径分别是x,y;

    第一个圆环转1圈,转动距离是它的周长,即2πx;

    第二个圆环的周长是2πy,第一个圆环带动它转动的圈数为2πx/2πy;

    化简得x/y,当然要约分。设约分后形式是a/b;

    从第二个齿轮开始,转动的距离=齿轮周长*转动圈数,即(a/b)2πx,下一个齿轮周长仍为2πy,化简得下一个齿轮转动圈数为(a/b)x/y,也要约分;

    需要注意的是这里的所有数值都要实时更新。

    证毕。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int gcd(int x,int y)
    {
    	if(x%y==0)return y;
    	return gcd(y,x%y);
    }//传统的辗转相除法
    int main()
    {
    	int n,x,y,k;cin>>n>>x>>y;
    	int a=x/gcd(x,y),b=y/gcd(x,y);
    	printf("%d/%d\n",a,b);//可以先处理两组
    	for(int i=3;i<=n;i++)
    	{
    		scanf("%d",&k);x=y,y=k;
    		int p=(a*x/b)/gcd(a*x/b,y),g=y/gcd(a*x/b,y);
    		printf("%d/%d\n",p,g);
    		a=p,b=g;
    	}//数据要实时更新
    	return 0;
    } 
    

    思路不难,代码易懂。

    • 1

    信息

    ID
    5358
    时间
    1000ms
    内存
    32MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者