首页 > 编程知识 正文

2平方加4平方一直加到50平方,漏洞分配编号标准

时间:2023-05-06 12:27:01 阅读:175891 作者:2845

四平定理,又称拉格朗日定理:

每个正整数最多可表示为4个正整数的平方和。

包括0在内,正好可以表示为四个数的平方和。

例如:

5=0^2 0^2 1^2 2^2

7=1^2 1^2 1^2 2^2

对于给定的正整数,平方和的表示法可能存在多个。

你要求对四个数进行排序:

0abcd

然后,对于所有可能的表示法,a、b、c、d用联合主键按升序排列,最后输出最初的表示法。

输入格式

输入正整数n。

输出格式

输出4个非负整数,按照从小到大的顺序排列,之间用空格隔开。

数据范围

0N5106

输入样例:

5 输出样例:

0 0 1 2

暴力:可以错过大部分数据

但是结果超时了

# includecstdiousingnamespacestd; const int N=1e7; int nn; int main () Scanf ) ' %d ',nn ); for(intI=0; i2500; I ) for(intj=I; j2500; j ) for(intm=j; m2500; m () for ) intn=m; n2500; n ) if(I*Ij*jm*mn==nn ) ) printf('%d%d%d )、I、j、m、n ); 返回0; } } } } } return 0; }

优化:

引出一楼的for循环后,即使过了两个测试点,结果也超时了

# include cstdio # includecmathusingnamespacestd; const double N=1e7; 双精度nn; int main () scanf ) ' %lf ',nn ); for(doubleI=0; i2500; I ) for(doublej=I; j2500; j ) for(doublem=j ); m2500; m () if ) sqrt(nn-I*I-j*j-m*m )=(int ) sqrt ) nn-I*I-j*j-m*m ) ) printf(%d%d%d(d ) d } } } } return 0; }

优化判断流程:

# include cstdio # includecmathusingnamespacestd; const int N=1e7; int nn; int main () Scanf ) ' %d ',nn ); for(intI=0; i*inn; I ) for(intj=I; i*i j*jnn; j ) for(intm=j; i*i j*j m*mnn; m ) { int t=nn-i*i-j*j-m*m; intk=sqrt(t; if(k*k==t ) printf('%d%d%d ',I,j,m,k ); 返回0; } } } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。