HDU4143-A Simple Question数论题解
生活随笔
收集整理的這篇文章主要介紹了
HDU4143-A Simple Question数论题解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數論題HDU-4143 A Simple Problem
解題分析:
不能從下往上枚舉,上限不明確,超時肯定會。
思路:需要將等式因式分解(y-x)(y+x)=n,看n的兩個因子
一個記為
i=y-x;
i/n=y+x;
下式減上式,得到x=(i/n-i)/2
要求2x=(i/n-i) 需要是偶數,即條件(i/n-i) %2= =0
或者2y=i+i/n 需要是偶數,即條件(i+i/n)%2 == 0 這里二選一即可,本質上一樣。
AC代碼:
//#include<cstdio> #include<iostream> #include<cmath> using namespace std;int main() {int t,n,i;cin>>t;while(t--){cin>>n;int x=0;for(i=sqrt(n);i>=1;i--)//從最大因子開始遍歷{if(n%i==0)//n是可開方數{if((i+n/i)%2==0&&i!=n/i)//兩個因子不相等{x=(n/i-i)/2;//x關于兩個因子的表達式break;}}}if(x)cout<<x<<endl;elsecout<<"-1"<<endl;}return 0; }參考資料:www.vjudge.
總結
以上是生活随笔為你收集整理的HDU4143-A Simple Question数论题解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 东阿阿胶是国企吗
- 下一篇: 2018胡润百富榜前十排名