圆环
作者:互联网
#include<iostream> #include<cstdio> using namespace std; int n,a[10000000]; int q,w; int first; int box; int gcd(int x,int y) { if (x%y==0) return y; return gcd(y,x%y); } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } first=a[1]; q=first; for(int i=2;i<=n;i++) { w=a[i]; cout<<first/gcd(q,w)<<"/"<<a[i]/gcd(q,w)<<endl; } return 0; }
(利用欧几里得辗转相除法求出最大公约数)
题目描述
在一条水平直线上依次放着N个半径大小不同的圆环(从左到右依次编号为1到N)。每一个圆环跟它的前一个圆环和后一个圆环接触(除第一个和最后一个),如下图所示。
当顺时针推动第一个环(最左边的环)时,由于摩擦力的作用后面的环依次跟着转动,转动的方向如上图所示,转动的速度由于半径的不同而不同。
编程确定当第一个环转动一圈时,后面的环各转动了多少圈。注意,转动的圈数不一定正好是整数。
输入输出格式
输入格式:
两行, 第一行包含一个整数N(3≤N≤100)。
第二行包含N个用空格分隔的整数Ai(1≤i≤N,1≤Ai≤1000),依次表示第i个环的半径。
输出格式:
N-1行,第i行包含一个分数A/B,表示第i+1个环转动的圈数,A/B是最简分式(即A和B没有比1大的公约数,不能再约分)。
输入输出样例
输入样例一:3 8 4 2输出样例一:
2/1 4/1输入样例二:
4 12 3 8 4输出样例二:
4/1 3/2 3/1输入样例三:
4 300 1 1 300输出样例三:
300/1 300/1 1/1
说明
数据规模:
对于20%的数据,保证:3≤N≤10;
对于40%的数据,保证:3≤N≤30;
对于60%的数据,保证:3≤N≤50;
对于80%的数据,保证:3≤N≤90;
对于100%的数据,保证:3≤N≤100,1≤Ai≤1000。
(递归练习题qwq)
标签:int,样例,转动,300,Ai,圆环 来源: https://www.cnblogs.com/liaoshuangqi/p/10723009.html