TFLSc1908lzs

给出一个整数N,将N表示为2个整数i与j的平方之和(i <= j),如果有多种表示,按照i的递增序输出。

例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2(注:3^2 + 11^2同11^2 + 3^2算1种)

Input一个数N(1 <= N <= 10^9)Output共K行:每行2个数,i j,表示N = i^2 + j^2(0 <= i <= j)。 如果无法分解为2个数的平方和,则输出No SolutionSample Input

130

Sample Output

3 11
7 9
________________________________________________________________________________________________________________________________________________
满分代码:

 

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long n,ans=1;
 6     cin>>n;
 7     for(int x=0;x<=sqrt(n);x++)//着重注意x枚举的范围
 8     {
 9         int y=sqrt(n-x*x);//由于y是int类型,所以除整除情况以外,y的值都会上下取整而改变
10         if(y*y+x*x==n && x<=y)//如果y的平方+x的平方正好等于n,说明sqrt(n-x*x)的结果正好是整数,符合题目要求
11         {
12             ans=0;//判断旗帜
13             cout<<x<<" "<<y<<endl;
14         }
15     }
16     if(ans)cout<<"No Solution";
17     return 0;
18 }

 

分类:

技术点:

相关文章:

  • 2022-03-02
  • 2021-08-05
  • 2021-09-28
  • 2021-12-28
  • 2021-12-24
  • 2021-07-10
猜你喜欢
  • 2022-02-18
  • 2021-08-02
  • 2021-06-12
  • 2021-12-01
  • 2021-06-19
  • 2021-12-26
相关资源
相似解决方案