最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

YACS四方定理

IT圈 admin 1浏览 0评论

YACS四方定理

这道题看似挺难,其实抓住关键就很方便,因为数据不大,所以我们可以暴力枚举亿下下,四个for:

for(int a=0;a*a<=x/4;a++)
for(int b=a;b*b<=x/3;b++)
for(int c=b;c*c<=x/2;c++)
for(int d=c;d*d<=x/1;d++)

我们可以大胆地把它们放在一列,每次分配的越来越少。且初始值也有变化,为的是不重复。

if(a*a+b*b+c*c+d*d==x)printf("%d %d %d %d\n",a,b,c,d);

然后一个if搞定。

最终代码:

#include<bits/stdc++.h>
using namespace std;
int main(){int x;cin>>x;for(int a=0;a*a<=x/4;a++)for(int b=a;b*b<=x/3;b++)for(int c=b;c*c<=x/2;c++)for(int d=c;d*d<=x/1;d++)if(a*a+b*b+c*c+d*d==x)printf("%d %d %d %d\n",a,b,c,d);return 0;
}

谢谢!求点赞!

YACS四方定理

这道题看似挺难,其实抓住关键就很方便,因为数据不大,所以我们可以暴力枚举亿下下,四个for:

for(int a=0;a*a<=x/4;a++)
for(int b=a;b*b<=x/3;b++)
for(int c=b;c*c<=x/2;c++)
for(int d=c;d*d<=x/1;d++)

我们可以大胆地把它们放在一列,每次分配的越来越少。且初始值也有变化,为的是不重复。

if(a*a+b*b+c*c+d*d==x)printf("%d %d %d %d\n",a,b,c,d);

然后一个if搞定。

最终代码:

#include<bits/stdc++.h>
using namespace std;
int main(){int x;cin>>x;for(int a=0;a*a<=x/4;a++)for(int b=a;b*b<=x/3;b++)for(int c=b;c*c<=x/2;c++)for(int d=c;d*d<=x/1;d++)if(a*a+b*b+c*c+d*d==x)printf("%d %d %d %d\n",a,b,c,d);return 0;
}

谢谢!求点赞!

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论