• 专业坑点合集


    分数

    #include<bits/stdc++.h>
    using namespace std;
    typedef long ll;
    
    char s[10000];
    ll arr,brr;
    ll fz,fm;
    
    void f(){
        int i=0,len=strlen(s),flag=0;
        if(s[0]=='-') ++i,flag=1;
        for(;i<len;++i){
            if(s[i]=='/') break;
        }
        ll a1=0,b1=0;;
        for(int j=(s[0]=='-'?1:0);j<i;++j){
            a1=a1*10+(ll)(s[j]-'0');
        }
        for(int j=i+1;j<len;++j){
            b1=b1*10+(ll)(s[j]-'0');
        }
        if(flag==1) arr=-a1;
        else arr=a1;
        brr=b1;
    }
    void f1(){
        int i=0,len=strlen(s),flag=0;;
        if(s[0]=='-') ++i,flag=1;;
        for(;i<len;++i){
            if(s[i]=='/') break;
        }
        ll a1=0,b1=0;;
        for(int j=(s[0]=='-'?1:0);j<i;++j){
            a1=a1*10+(ll)(s[j]-'0');
        }
        for(int j=i+1;j<len;++j){
            b1=b1*10+(ll)(s[j]-'0');
        }
        if(flag==1) fz=-a1;
        else fz=a1;
        fm=b1;
    }
    int main()
    {
        int n;scanf("%d",&n);
        scanf("%s",s);
        f1();
        for(int i=2;i<=n;++i){
            scanf("%s",s);
            f();
            ll tm=fm;
            ll cmp=__gcd(brr,fm);
            fm=brr*fm/cmp;
            ll t1=fm/tm,t2=fm/brr;
            fz=t1*fz+t2*arr;
            ll tmp=__gcd(fz,fm);
            if(tmp!=1){
                fz=fz/tmp;fm=fm/tmp;
            }
        }
        if(fz==0) cout<<0<<endl;
        else if(abs(fz)<fm){
                cout<<fz<<"/"<<fm<<endl;
        }
        else{
            ll tz=fz;
            if(fz<0) fz=-fz,cout<<"-";
            ll c=fz%fm;
            ll t=fz/fm;
            if(c==0) cout<<t<<endl;//注意判断如果分子为0则整个数为0
            else{
                cout<<t<<" ";
                if(tz<0) cout<<"-"<<c<<"/"<<fm<<endl;
                else cout<<c<<"/"<<fm<<endl;
    
            }
        }
    }
    
    • 注意分母定不可以为0

    • 求斜率时同时注意分母不得为0和斜率不存在的情况

    杂项

    • 单独for循环一定要加花括号

    • 乘两次必取模

    • string 不是以''为字符串的结束标志

    img

    • pow函数的用法,用的时候不可以开负数的立方
  • 相关阅读:
    Spring Boot + Vue 开发前后端分离的员工管理系统
    树莓派4B部署docker
    免费的论文查重网站
    JavaScript设计模式
    js继承的用法
    js闭包与柯里化
    Javascript编程小技巧
    spy-debugger和fiddler实现移动端抓包
    grid布局
    js判断对象是否为空对象的几种方法
  • 原文地址:https://www.cnblogs.com/waryan/p/13298823.html
Copyright © 2020-2023  润新知