码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 4143 A Simple Problem

时间:2020-05-25 00:14:44      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:pre   情况   ble   img   mic   就会   --   isp   image   

技术图片

题意:给你一个n,求最下的x使得存在一个y从而y2=n+x2成立。

你们这些人就会出些叫做“simple”,“简单”的题来欺负蒟蒻QAQ

思路分析:考虑初中二年级学过的公式:x2-y2=(x-y)*(x+y);那么我们的原式就变成了(y-x)*(y+x)=n;既然如此,我们只需枚举每一对n的因子a,b,判断a+b(2y)模上2是不是0,a-b(2x)模上2是不是零,找出最小解即可,我们在枚举时到根号n就行了,反正是每一对因子(注意相等情况不可取,x不为零)

代码:

技术图片
 1 #include<cstdio>
 2 #include<cmath>
 3 int main(){
 4     int t;
 5     scanf("%d",&t);
 6     while(t--){
 7         int n;
 8         scanf("%d",&n);
 9         int i;
10         int ans=2147483647,flag=0;
11         for(i=1;i<sqrt(n);i++){
12             if(n%i==0&&(i+n/i)%2==0&&(n/i-i)%2==0){
13                 flag=1;
14                 if(n/i-i<ans)ans=n/i-i;//这里计算的是2x 
15             }
16         }
17         if(flag) printf("%d\n",ans/2);
18         else printf("-1\n");
19     }
20     return 0;
21 }
View Code

 

hdu 4143 A Simple Problem

标签:pre   情况   ble   img   mic   就会   --   isp   image   

原文地址:https://www.cnblogs.com/li-jia-hao/p/12953503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!