程式設計找出不同的四位平方數對,它們由相同的數字構成

2021-06-29 01:54:40 字數 1602 閱讀 3792

問題重述:

[ 1024,2401; 1089,9801; 1296,2916; 1296,9216; 1369,1936; 1764,4761; 2916,9216; 4096,9604 ] 

上述數對是1000~9999 的平方數,他們4個位數上所用到的數字是一樣的。

問題分析:

1000~9999所有的平方數對應的平方根範圍是32~99,二重遍歷32~99,找出符合規則的數對(x != y),列印。

偽**的框架可以簡化為:

i : 32 -> 99

j : i+1 -> 99

//相應的規則符合即列印i ,j 

乙個錯誤的想法:

按照上述偽**框架,找出規則為解題的關鍵:

最初的錯誤想法是:

將 平方數 的4位數每一位數的和&積(除去0)求出來,都相等的即為符合的規則

結果:多出來這樣的數對:

後來仔細考慮發現 忽略了4平方位數的合數字的質因數或者因數 可能在另一4位平方數上佔據多位(有點繞口,但看上述三個特例就清楚了)

為了交流學習,錯誤**如下:

#include int numbersum(int num)

return sum;

}int numberadd(int num)

return sum;

}int main()

}} }

return 0;

}

正確的思路:將平方數的每一位放入陣列,並對陣列按公升序或者降序排序後,對兩個陣列按位比較。

**如下:

#include using namespace std;

int cmp(const void*a,const void*b)

//將每一位數字存入陣列

void getnumber(int num,int a)

}//按位比較兩個陣列的每一位數字

int compare(int a,int b)

else

continue;

} if(count == 4)

return 1;

else

return 0;

}int main()

{ int i;

int j;

int a[4];

int b[4];

for (i = 32 ;i < 100; i++)

{ getnumber(i*i,a);

qsort(a,4,sizeof(a[0]),cmp);//排序

for(j= i+1 ;j< 100; j++)

{ getnumber(j*j,b);

qsort(b,4,sizeof(b[0]),cmp);//排序

if(compare(a,b))

{cout << "{"執行結果如下:

輸出四位完全平方數 leetcode279 go

給定正整數 n,找到若干個完全平方數 比如 1,4,9,16,使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。示例 1 輸入 n 12 輸出 3 解釋 12 4 4 4.示例 2 輸入 n 13 輸出 2 解釋 13 4 9.1 動態規劃 時間複雜度o n 3 2 空間複雜度o n 2 ...

判別四位平方數以及floor函式用法

1.輸出形如aabb的所有四位平方數 直接列舉,a從1到9,b從0到9,表示出形如aabb的所有四位數很容易,但是判別是平方數,需要用到floor函式 2.floor函式 函式名 floor 功 能 返回小於或者等於指定表示式的最大整數 用 法 double floor double x 標頭檔案 ...

python 判斷四位數的性質

問題描述 3025這個數具有一種獨特的性質 將它平分為二段,即30和25,使之相加後求平方,即 30 25 30 25 恰好等於3025本身。編寫程式判斷輸入的四位數n是否是滿足abcd ab cd ab cd 這樣性質的四位數,是則輸出1,否則輸出0。輸入 乙個四位數n 輸出 1或者0 樣例輸入 ...