首页 > 其他 > 详细

51 nod 1080 两个数的平方和

时间:2017-07-28 21:21:49      阅读:140      评论:0      收藏:0      [点我收藏+]
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
技术分享 收藏
技术分享 关注
技术分享 取消关注
给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果有多种表示,按照i的递增序输出。
 
例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2 (注:3 11同11 3算1种)
Input
一个数N(1 <= N <= 10^9)
Output
共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j)。
如果无法分解为2个数的平方和,则输出No Solution
Input示例
130
Output示例
3 11
7 9

题解:水题
技术分享
 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 int n;
 5 int main()
 6 {
 7     cin>>n;
 8     int j=(int)sqrt(double(n))+1;
 9     int i=0;
10     int flag=0;
11     while(i<=j)
12     {
13         if(i*i+j*j>n)
14             j--;
15         else if(i*i+j*j<n)
16             i++;
17         else if(i*i+j*j==n)
18         {
19             flag=1;
20             cout<<i<<" "<<j<<endl;
21             i++;
22             j--;
23         }
24 
25     }
26     if(!flag)
27         cout<<"No Solution"<<endl;
28     return 0;
29 }
View Code

 

 

51 nod 1080 两个数的平方和

原文:http://www.cnblogs.com/onlyli/p/7252545.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!