关注
你好可以帮我看下哪里出错了吗??谢谢
#include<iostream>
#include<cstdio>
using namespace std;
long long lcm(long long x,long long y);
long long gcd(long long x,long long y);
void print(long long x,long long y);
int main(){
long a1,b1,a2,b2,g; //g用来存储最大公约数
scanf("%ld/%ld",&a1,&b1);
scanf("%ld/%ld",&a2,&b2);
long long m1=a1,n1=b1,m2=a2,n2=b2;
if(m1!=0){
g=gcd(m1,n1);
m1=m1/g;
n1=n1/g;
}
if(m2!=0){
g=gcd(m2,n2);
m2=m2/g;
n2=n2/g;
}
long long l=lcm(b1,b2); //最小公倍数 --和/差的分母
long long add=(l/b1)*a1+(l/b2)*a2;// 和的分子
long long minus=(l/b1)*a1-(l/b2)*a2; //差的分子
long long l2=l;
if(add!=0){
g=gcd(add,l);
add=add/g;
l=l/g;
}
print(m1,n1);
printf(" + ");
print(m2,n2);
printf(" = ");
print(add,l);
printf("\n");
if(minus!=0){
g=gcd(minus,l2);
minus=minus/g;
l2=l2/g;
}
print(m1,n1);
printf(" - ");
print(m2,n2);
printf(" = ");
print(minus,l2);
printf("\n");
print(m1,n1);
printf(" * ");
print(m2,n2);
printf(" = ");
if(a1!=0&&a2!=0){
long long muz=a1*a2;//积的分子
long long mum=b1*b2;
g=gcd(muz,mum);
muz=muz/g;
mum= mum/g;
print(muz,mum);
printf("\n");
}else{ //积为0
//long long muz=0;//积的分子
printf("0\n");
}
print(m1,n1);
printf(" / ");
print(m2,n2);
printf(" = ");
if(a2==0){ //商为Inf
printf("Inf\n");
}else{
if(a1==0) {
//dez=0;//商为0
printf("0\n");
}
else{
long long dez=a1*b2;//商的分子
long long dem=b1*a2;
g=gcd(dez,dem);
dez=dez/g;
dem= dem/g;
print(dez,dem);
printf("\n");
}
}
return 0;
}
long long lcm(long long x,long long y){
long long i,l1,l2;
long long top=l1*l2;
for(i=1;i<=top;i++){
l1=x*i;
l2=y*i;
if(l1%y==0||l2%x==0)
break;
}
if(l1%y==0) return l1;
else return l2;
}
long long gcd(long long x,long long y){
long long g=1;
x=x>0?x:-x;
y=y>0?y:-y;
long long min=x>y?y:x;
long long i;
for(i=2;i<=min;i++){
while(x%i==0&&y%i==0){
g=g*i;
x=x/i;
y=y/i;
}
min=x>y?y:x;
}
return g;
}
void print(long long x,long long y){
if(x==0) {
printf("0");
return;
}
if(y<0) {
y=-y;
x=-x;
}
if(x>0){
long long integer=x/y;
long long mod=x%y;
if(integer == 0) printf("%lld/%lld",x,y);
else {
if(mod==0) printf("%lld",integer);
else printf("%lld %lld/%lld",integer,mod,y);
}
return;
}
if(x<0){
printf("(");
x=-x;
long long integer=-(x/y);
long long mod=x%y;
if(integer==0) printf("%lld/%lld",-x,y);
else{
if(mod==0) printf("%lld",integer);
else printf("%lld %lld/%lld",integer,mod,y);
}
printf(")");
return;
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
10-16 12:29
携程_移动安全研发 Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
牛客热帖
正在热议
# 晒一晒我的offer #
9713225次浏览 104868人参与
# 应届生被毁约被毁意向了怎么办 #
24804次浏览 233人参与
# 北方华创开奖 #
21446次浏览 244人参与
# 地方国企笔面经互助 #
2128次浏览 6人参与
# 查收我的offer竞争力报告 #
14047次浏览 199人参与
# 机械应届生薪资要多少才合适? #
11943次浏览 58人参与
# 我的工作日记 #
20556次浏览 269人参与
# 寒假躺平还是提前实习 #
57239次浏览 419人参与
# 总结:哪家公司面试体验感最差 #
23911次浏览 116人参与
# 实习,投递多份简历没人回复怎么办 #
2384111次浏览 34210人参与
# 公司情报交流地 #
31219次浏览 220人参与
# 00后45度躺现状 #
35868次浏览 305人参与
# 秋招OC许愿 #
224638次浏览 1856人参与
# 不给转正的实习,你还去吗 #
1513162次浏览 16940人参与
# 没有实习经历,还有机会进大厂吗 #
803279次浏览 13775人参与
# 秋招拿一个offer可以躺平吗 #
103561次浏览 805人参与
# 机械人,签完三方你在忙什么? #
23294次浏览 119人参与
# 选完offer后,你后悔学本专业吗 #
7338次浏览 47人参与
# 来聊聊机械薪资天花板是哪家 #
63607次浏览 431人参与
# 0offer是寒冬太冷还是我太菜 #
880261次浏览 7870人参与
# 大家都开始春招面试了吗 #
409872次浏览 5222人参与