SP2901 GEOPROB - One Geometry Problem 题解

2024/04/25 Blog

什么小学几何题。

解法

小学三年级学的构造弦图,容易得到线图中四个三角形都全等。如图。

图片

\[\begin{aligned}a & = c-d+d-b+c-d \\ & = 2c-b-d\end{aligned}\]

证明都在图里了,这里不再多说。

顺带一提,本题要写高精度,这里给部分封装过的模板,开封即用。

class high_accuracy
{
private:
    int len,a[210];
public:
    high_accuracy()
    {
        len=0,memset(a,0,sizeof(a));
    }
    inline void clear()
    {
        len=0,memset(a,0,sizeof(a));
    }
    inline int &operator[](const int x)
    {
        return a[x];
    }
    inline int size()
    {
        return len;
    }
    inline void init(__int128 x)
    {
        len=0,memset(a,0,sizeof(a));
        if(x==0) len=1;
        while(x) a[++len]=x%10,x/=10;
    }
    inline void input()
    {
        std::string st;
        std::cin>>st,len=0,memset(a,0,sizeof(a));
        for(int i=st.size()-1;i>=0;i--) a[++len]=st[i]^48;
    }
    inline void deal(int l)
    {
        for(int i=1;i<=l;i++) a[i+1]+=a[i]/10,a[i]%=10;
        len=l;
        for(int i=1;i<=l;i++) if(a[i]<0) a[i+1]-=(abs(a[i])-1)/10+1,a[i]+=((abs(a[i])-1)/10+1)*10;
        while(!a[len]) len--;
    }
    inline void print()
    {
        for(int i=std::max(len,1);i;i--) std::cout<<a[i];
    }
    inline high_accuracy operator+(high_accuracy rhs)
    {
        high_accuracy ret;
        int le=std::max(len,rhs.size());
        for(int i=1;i<=le;i++) ret[i]+=a[i]+rhs[i],ret[i+1]=ret[i]/10,ret[i]%=10;
        ret.deal(le+2);
        return ret;
    }
    inline high_accuracy operator-(high_accuracy rhs) // 适用于 *this 比 rhs 大的情况
    {
        high_accuracy ret;
        int le=std::max(len,rhs.size());
        for(int i=1;i<=le+3;i++) ret[i]=0;
        for(int i=1;i<=le;i++) ret[i]+=a[i]-rhs[i];
        ret.deal(le+2);
        return ret;
    }
};

代码

#include<bits/stdc++.h>
int n;
class high_accuracy
{
    /**
     * 封装内容如上
    */
};
high_accuracy a,b,c,d;
int main()
{
    std::cin>>n;
    while(n--) b.input(),c.input(),d.input(),a.clear(),a=c+c-b-d,a.print(),std::cout<<'\n';
    return 0;
}
对我博客最大的鼓励来自于你的评论(什么玩梗),欢迎选择 来回复, 也可以在 GitHub discussion 留言。

Search

    公告

    博主这下真摆烂了。我下辈子也不碰 Jekyll 和 MathJax 了!
    留言板,现在博主的精神状态非常好,有事烧纸。

    联系方式

    QQ: 33299235
    email: 33299235@qq.com
    Gmail: scp020.cn@gmail.com

    本人的其它个人主页

    洛谷
    CSDN

    友链

    拜谢stevehim(已退役,祝好)
    拜谢日记
    拜谢cppomstar

    views counting

    Document

    Table of Contents