pat 34 乙级 有理数四则运算最后两个测试点 不仅longlong坑你一把 也可能是abs绝对值

本文主要是介绍pat 34 乙级 有理数四则运算最后两个测试点 不仅longlong坑你一把 也可能是abs绝对值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include<stdio.h>
#include<math.h>long long int gcd(long long a, long long b)  //求最大公约数
{if (a%b == 0) return b;else return gcd(b, a%b);
}
void huajian(long long *a, long long *b)
{long long t = abs(gcd(*a, *b));*a = *a / t;*b = *b / t;
}
void relation(long long int div, long long int Div)
{long long  int k, kk;if (Div == 0) printf("Inf");                                     //除数等于0else if (div == 0)printf("%lld", div);                           //被除数等于0else if (div > 0)                                               //被除数大于0{huajian(&div, &Div);if (div < Div)                                                              //真分数{                                                    printf("%lld/%lld", div, Div);                                          //输出}else {                                                                     //假分数k = div / Div;                                                              //整数部分kk = div%Div;if (kk== 0)                                                            //整除printf("%lld", k);else                                                                         //非整除{                                                                    //分子                                               //化简printf("%lld %lld/%lld", k, kk, Div);}}}else                                                      //被除数小于0{huajian(&div, &Div);if ((-1*div) < Div)                                                         //真分数{printf("(%lld/%lld)", div, Div);}else                                                                        //假分数{k = div / Div;                                                         //整数部分kk = (-1*div)%Div;if (kk == 0) printf("(%lld)", k);                                           //整除                       else{printf("(%lld %lld/%lld)", k, kk, Div);}}}
}
void add_min_mul_div(long long int a, long long int b, char sign, long long  int c, long long int d)
{relation(a, b);printf(" %c ", sign);relation(c, d);long long int a1, a2;switch (sign){case '+':     a1 = a*d + b*c;    a2 = b*d;       break;case '-':     a1 = a*d - b*c;    a2 = b*d;       break;case '*':     a1 = a*c;          a2 = b*d;       break;case '/':      a1 = a*d;  a2 = b*c;  if (a2 < 0) { a1 = -a1; a2 = -a2; }break;     //保证分母大于0}printf(" = ");relation(a1, a2);
}
int main()
{char sign[] = { '+','-','*','/' };long long a, b, c, d;scanf("%lld/%lld %lld/%lld", &a, &b, &c, &d);for (int i = 0; i < 4; i++){add_min_mul_div(a, b, sign[i], c, d);  printf("\n");}//while (1);return 0;
}

1.最后两个测试点花了大概五个小时。刚开始按照网上 的都改成longlong了 一直不过。最后 发现我之前代码乘-1部分用的绝对值。abs().abs参数是int型的  唉。。欲哭无泪

这篇关于pat 34 乙级 有理数四则运算最后两个测试点 不仅longlong坑你一把 也可能是abs绝对值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731891

相关文章

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

找出php中可能有问题的代码行

前言 当你发现一个平时占用cpu比较少的进程突然间占用cpu接近100%时,你如何找到导致cpu飙升的原因?我的思路是,首先找到进程正在执行的代码行,从而确定可能有问题的代码段。然后,再仔细分析有问题的代码段,从而找出原因。 如果你的程序使用的是c、c++编写,那么你可以很容易的找到正在执行的代码行。但是,程序是php编写的,如何找到可能有问题的代码行呢?这个问题就是本文要解决的问题。 背景

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

颠覆你的开发模式:敏捷思维带来的无限可能

敏捷软件开发作为现代软件工程的重要方法论,强调快速响应变化和持续交付价值。通过灵活的开发模式和高效的团队协作,敏捷方法在应对动态变化和不确定性方面表现出色。本文将结合学习和分析,探讨系统变化对敏捷开发的影响、业务与技术的对齐以及敏捷方法如何在产品开发过程中处理持续变化和迭代。 系统变化对敏捷软件开发的影响 在敏捷软件开发中,系统变化的管理至关重要。系统变化可以是需求的改变、技术的升级、

『功能项目』武器的切换实例【34】

本章项目成果展示 我们打开上一篇33战士的A键连击的项目, 本章要做的事情是按键盘E键切换职业时切换手中的武器 首先在资源商店下载免费的武器模型 创建一个空物体 命名为WeaponPos 将武器预制体拖拽至WeaponPos (注意调整空物体位置就可以后续文章会更换武器) 隐藏两把武器 运行项目 隐藏装备 在资源商店

两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29;import org.apache.commons.lang3.StringUtils;/*** create by 2019-06-29 19:03** @autho

创建一个大的DIV,里面的包含两个DIV是可以自由移动

创建一个大的DIV,里面的包含两个DIV是可以自由移动 <body>         <div style="position: relative; background:#DDF8CF;line-height: 50px"> <div style="text-align: center; width: 100%;padding-top: 0px;"><h3>定&nbsp;位&nbsp;

在二叉树中找到两个节点的最近公共祖先(基于Java)

如题  题解 public int lowestCommonAncestor(TreeNode root, int o1, int o2) {//记录遍历到的每个节点的父节点。Map<Integer, Integer> parent = new HashMap<>();Queue<TreeNode> queue = new LinkedList<>();parent.put(roo

Java中计算两个日期间隔多少天

String dbtime1 = "2017-02-23";  //第二个日期 String dbtime2 = "2017-02-22";  //第一个日期 //算两个日期间隔多少天 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = format.parse(dbtime1); Date dat