什么小学几何题。
解法
小学三年级学的构造弦图,容易得到线图中四个三角形都全等。如图。
证明都在图里了,这里不再多说。
顺带一提,本题要写高精度,这里给部分封装过的模板,开封即用。
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;
}