首页 > 其他分享 >有理数类封装

有理数类封装

时间:2024-09-25 16:01:10浏览次数:1  
标签:return unlocked int 有理数 putchar print 封装 rea

上一版运算过程中会炸

inline int absl(int x){return x>0?x:~x+1;}
inline rea minrea(rea x,rea y){return x<y?x:y;}
inline int min(int x,int y){return x<y?x:y;}
struct rea{
    int mu,zi;
    rea jian(){
        int gcd=__gcd(absl(zi),absl(mu));
        if(mu<0){mu*=-1;zi*=-1;}
        if(!zi){mu=1;return *this;}
        if(!gcd)return *this;
        zi/=gcd;mu/=gcd;
        return *this;
    }
    rea(int x=0,int y=1){zi=x,mu=y;jian();}
    rea dao(){return rea(mu,zi);}
    rea operator+(rea a){return (rea(zi*a.mu+mu*a.zi,mu*a.mu)).jian();}
    rea operator*(rea a){
        int gcd1=__gcd(zi,a.mu);
        int gcd2=__gcd(a.zi,mu);
        return (rea((zi/gcd1)*(a.zi/gcd2),(mu/gcd2)*(a.mu/gcd1))).jian();
    }
    rea operator/(rea a){return (*this*a.dao()).jian();}
    rea operator-(){return rea(-zi,mu);}
    rea operator-(rea a){return *this+(-a);}
    bool operator<(rea a){return zi*a.mu<a.zi*mu;}
    bool operator>(rea a){return !(*this<a);}
    bool operator==(rea a){return !((*this<a)||(*this>a));}
    void out(){
        jian();
        print(zi),putchar_unlocked('/');
        print(mu);putchar_unlocked('\n');
    }
};

标签:return,unlocked,int,有理数,putchar,print,封装,rea
From: https://www.cnblogs.com/0shadow0/p/18427088

相关文章

  • Android连接蓝牙自定义封装SDK(基于Cordova与ionic)
    今天给大家分享一款基于Cordova与ionic框架自定义封装的Android手机连接蓝牙的插件。自己公司遇到的业务需求是,与第三方公司合作,需要在项目现场打印项目物资与物料验收单,后期提供给财务核对报销等。第三方公司提供蓝牙打印机与手持机,我们需要自己结合业务开发相对应的功能。......
  • java封装题目3
    3.以面向对象的思想,编写自定义类描述图书信息。设定属性包括:书名,作者,出版社名,价格;方法包括:信息介绍show()要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定价格必须大于10,如果无效进行提示3)限定作者,书名为只读属性4)设计构造方法实现对属性......
  • java封装题目2
    2.以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名,年龄,技术方向,工作年限,工作单位和职务;方法包括:工作要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定IT从业人员必须年满15岁,无效信息需提示,并设置默认年龄为15。3)限定“技......
  • 封装的练习题目1
    1.使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;方法包括:叫,跑。要求:1)设置属性的私有访问权限,通过公有的get,set方法实现对属性的访问2)限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示,默认设置“心情好”。3)设置构造......
  • el-form封装
    <template><el-formref="elform":model="formData":inline="inline":label-width="formLabelWidth":size="size"v-bind="$attrs":rules="rules"......
  • 命令模式:如何在一次请求中封装多个参数?
    命令模式使用频率不算太高,这里大家可能会问:命令和查询有什么区别?简单来说,查询是获取一个不可变的结果,而命令是改变状态,不一定获取结果。如果你熟悉函数式编程的话,会发现命令模式完全没有使用的必要,甚至在业务开发的场景中也很少使用到。不过对于想要找到正确抽象的设计者来说,命令......
  • Flutter中使用Sqflite封装数据库操作与更新管理
    1.简介在Flutter中,sqflite是一个强大的插件,用于SQLite数据库操作。我们可以通过封装sqflite库的数据库操作来使代码更清晰和模块化。本篇文章将介绍如何封装增删改查、数据库版本控制与更新的处理,以及如何将查询结果映射到实体类。2.初始化数据库与数据库封装创建数据库......
  • 软件测试笔记|web自动化测试|自动化测试中,模块封装有哪些?封装的目的是什么?
    在自动化测试中,常见的模块封装有以下几种:一、页面元素定位封装将页面上的各种元素定位方式(如通过ID、Name、XPath、CSS选择器等)进行封装,形成统一的元素定位方法。例如,可以创建一个函数,传入定位方式和定位表达式,返回定位到的元素对象。二、操作封装1.把对页面元素的常见......
  • Java入门:09.Java中三大特性(封装、继承、多态)02
    2继承需要两个类才能实现继承的效果。比如:类A继承类BA类称为子类,衍生类,派生类B类称为父类,基类,超类继承的作用子类自动的拥有父类的所有属性和方法(父类编写,子类不需要再编写)。代码复用目前私有的属性和方法无法访问。多态的基础。继承语法先定义父......
  • gin的基础及其简单封装
    文章目录自我介绍gin的优势gin框架[官方文档链接](https://gin-gonic.com/zh-cn/docs/quickstart/"官方文档连接")持续化刷新界面安装可以用fresh来启动可以把gin框架来实现beego框架的封装gin框架的中间件路由gin框架返回自我介绍大家好,我是Gin。在Go语......