设为首页 加入收藏

TOP

SDUT 1447 水题(y*y = x*x + n)
2015-11-21 01:03:55 来源: 作者: 【 】 浏览:2
Tags:SDUT 1447 水题

水题

?

Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^

题目描述

给定一个正整数 n,求一个最小的正整数 x,使得可以找到一个正整数y,且满足 y*y = n + x*x。

输入

输入包含多组测试数据。 每组数据只有一行为 1 个整数 n(0 < n < 10^9)。

输出

对于每组测试数据,按照题目描述输出对应的结果,如果找不到这样的正整数 x ,则输出 -1。

示例输入

2
3

示例输出

-1
1

提示

来源

qinchuan

示例程序

?

?

?

题目知道y*y - x*x = n ----> (y-x)*(y+x) = n 并且(y-x)和(y+x)同奇偶所

?

以根据这个特性就可以做了。但是我就不明白这个题把n定义成long long int 为什么就

?

是无休止的WA,几个小时不用干别的了,就在那里想哪里出错了。万念俱灰的把long

?

long去掉交居然就AC了,搞不懂........

?

?

?

#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        #include
       
         #include
        
          using namespace std; int n; void maxx(int &a,int &b) { if(a
         
          =1;i--) { if(n%i == 0) { x = i; y = n/i; if(x!=y) { maxx(x,y); if((x%2 == 0 && y%2 == 0) || (x%2 == 1 && y%2 == 1)) { flag = 1; int px = (x-y)/2; if(minn>px) { minn = px; } } } } } if(flag == 0) { printf("-1\n"); } else { printf("%d\n",minn); } } return 0; } 
         
        
       
      
     
    
   
  


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ1962:Corporative Network(并.. 下一篇HDU 1452 Happy 2004 (因子和)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: