hdu4143

来源:互联网 发布:Ubuntu 14输入法不好用 编辑:程序博客网 时间:2024/06/18 06:30
/*
摘:
    解题思路:如果要按正常方法从小到大遍历,由于数据量大一定会超时。
其实上述式子转化后可以分解因子:n = ( y - x )*( y + x ) ;
令 y - x = i,所以有 x + y = n / i ,即 ( n / i - i ) / 2 = x.
    注意:x 要大于 0 ,当 n 是完全平方数时要注意。


                                                   2012-04-21
*/




#include"stdio.h"#include"math.h"int main(){int i;int t;int n;int x;int T;scanf("%d",&T);while(T--){scanf("%d",&n);x=-1;t=(int)sqrt(n);for(i=t;i>0;i--){if(n%i==0&&(n/i-i)%2==0&&(n/i-i)/2>0){x=(n/i-i)/2;break;}}printf("%d\n",x);}return 0;}


原创粉丝点击