• hdu 4143 A Simple Problem


    题意:给你一个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
    ",ans/2);
    18         else printf("-1
    ");
    19     }
    20     return 0;
    21 }
    View Code
  • 相关阅读:
    搭建论坛
    修改ecshop页面
    通信失败的原因
    UCenter教程
    discuz论坛 手机登录
    discuz论坛 安装短信插件
    eccshop获取商品详情属性的字段调用值
    php与discuz形成的对接
    php
    php论坛
  • 原文地址:https://www.cnblogs.com/li-jia-hao/p/12953503.html
Copyright © 2020-2023  润新知