51Nod點頭網 1080 兩個數的平方和

2021-06-29 15:26:42 字數 963 閱讀 1393

1080 兩個數的平方和

基準時間限制: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示例

130output示例

3 11

7 9思路:x*x+y*y=n   => 判斷  [sqrt(n-x*x)]的平方與x的平方的和是否和n相等(注:[ ]  即不超過該數的最大整數,[3.5]=3,[3]=3)

剩下的就是判重了,,,我是做乙個陣列,進行儲存,然後遍歷。。。後來看了其他人的**發現好蛋疼——完全可以直接用x為防重條件。。。看來要走的路還很長。。。

下面貼了我自己的**:

**#include #include using namespace std;

int a[100001];

int test(int x,int l)

{ int flag=0;

for(int i=0;i>n)

{ m=(int)sqrt((double)n);

flag=0;l=0;

for(int i=0;i<=m;i++)

{x=i;

y=(int)sqrt((double)(n-i*i));

if(x*x+y*y==n)

{ a[l]=y;

c=test(x,l);

l++;

if(c==0)

{cout<

51nod點頭網 1136 尤拉函式

來自51nod點頭網的題 1136 尤拉函式 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為euler s totient function 函式 尤拉商數等。...

51nod點頭網 1240 莫比烏斯函式

題目鏈結 1240 莫比烏斯函式 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 莫比烏斯函式,由德國數學家和天文學家莫比烏斯提出。梅滕斯 mertens 首先使用 n miu n 作為莫比烏斯函式的記號。據說,高斯 gauss 比莫比烏斯早三十年就曾考慮過這...

51nod 1080 兩個數的平方和

1080 兩個數的平方和 基準時間限制 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種 inpu...