3 条题解
-
0仲昱腾 LV 7 @ 2023-12-12 19:06:18
#include <iostream>
using namespace std;
int a,b,n,a1,b1;
int gcd(int a,int b)
{
int r=a%b;
while(r)
{
a=b;b=r;r=a%b;
}
return b;
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
int main()
{
cin>>n>>b>>a;
int fm=a,fz=b;
for(int i=2;i<=n;i++)
{
cin>>b1>>a1;
int l=lcm(fm,a1);
fz=fz*l/fm+b1*l/a1;
fm=l;
}
int n=gcd(fz,fm);
cout<<fz/n<<" "<<fm/n;
return 0;
} -
02021-11-06 15:14:08@
#include <iostream>
using namespace std;
int MaxYue(int a,int b);
int MinBei(int a,int b);
int MaxYue(int a,int b)
{
int tmp;
if(a<b) //如果a小于b,则交换值
{
tmp=a;
a=b;
b=tmp;
}
return b==0?a:MaxYue(b,a%b); //运用辗转相除法求出最大公约数
}
int MinBei(int a,int b)
{
return a*b/MaxYue(a,b); //最小公倍数等于两数乘积除以最大公约数
}
int main()
{
int i,n,a[1000],b[1000],asum=0,bsum;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i]>>b[i];
if(n==1) //如果只有一项,直接输出
{
i=MaxYue(a[0],b[0]);
a[0]/=i;
b[0]/=i;
cout<<a[0]<<" "<<b[0];
return 0;
}
bsum=MinBei(b[0],b[1]); //首先记录前两项分母的最小公倍数
for(i=2;i<n;i++)
bsum=MinBei(bsum,b[i]); //循环记录与后一个分母的最小公倍数
for(i=0;i<n;i++)
asum+=a[i]*bsum/b[i]; //分子乘以分母扩大的倍数然后相加
i=MaxYue(asum,bsum); //分子和分母进行约分,除以最大公倍数
asum/=i;
bsum/=i;
cout<<asum<<" "<<bsum;
return 0;
} -
-12021-12-30 15:52:19@
#include<iostream>
using namespace std;struct Node
{
int fen_zi;
int fen_mu;
Node *next;
};class LinkList
{
private:
int n;
Node *head;
Node *tail;
public:
LinkList(int set_n)
{
n=set_n;
head=NULL;
tail=NULL;
}void set_list(LinkList &L)
{
int x,y;
for(int i=0;i<L.n;i++)
{
cin>>x>>y;
L.insert(x,y);
}
}void insert(int x,int y)
{
Node *newp=new Node;
newp->fen_zi=x;
newp->fen_mu=y;
if(head==NULL)
{
head=newp;
tail=newp;
}
else
{
tail->next=newp;
tail=newp;
}
if(tail!=NULL)
tail->next=NULL;
}int get_fen_mu()//得到不化简的分子
{
Node *p=head;
int sum=1;
while(p!=NULL)
{
sum=sum*p->fen_mu;
p=p->next;
}
return sum;
}int get_fen_zi(LinkList &L)//得到不化简的分母
{
Node *p=L.head;
int sum=0;
while(p!=NULL)
{
sum=sum+p->fen_zi*L.get_fen_mu()/p->fen_mu;
p=p->next;
}
return sum;
}int yue_shu(int x,int y)//求最大公约数
{
int tmp;
if(x<y)
{
tmp=x;
x=y;
y=tmp;
}
return y==0?x:yue_shu(y,x%y);
}};
int main()
{
int n;
cin>>n;
LinkList start(0);
LinkList List(n);
start.set_list(List);
int x,y;
x=start.get_fen_zi(List)/List.yue_shu(start.get_fen_zi(List),List.get_fen_mu());
y=List.get_fen_mu()/List.yue_shu(start.get_fen_zi(List),List.get_fen_mu());
cout<<x<<" "<<y<<endl;system("pause");
return 0;
}
- 1
信息
- ID
- 1028
- 难度
- 2
- 分类
- (无)
- 标签
- 递交数
- 106
- 已通过
- 60
- 通过率
- 57%
- 上传者