想進阿里的小菜鳥 C程式經典100例 No 3

2021-10-25 10:19:39 字數 829 閱讀 6957

no.3

乙個整數,它加上100後是乙個完全平方數,再加上168又是乙個完全平方數,請問該數是多少?

我拿到題目的第乙個想法就是順著題目思路寫出數學關係式,只要保證等號右邊的式子是整數的平方就可以了,而這我選擇了找乙個較大的整數範圍進行遍歷,造成的後果就是執行很慢很慢很慢,而且我的做法不能找負數。

#include

intmain()

}}

標準答案:

執行的真的很快,是我沒想到的方法,淦!

程式分析:

假設該數為 x。

1、則:x + 100 = n * n, x + 100 + 168 = m * m

2、計算等式:m * m - n * n = (m + n)(m - n) = 168

3、設定: m + n = i,m - n = j,i * j =168,i 和 j 至少乙個是偶數

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要麼都是偶數,要麼都是奇數。

5、從 3 和 4 推導可知道,i 與 j 均是大於等於 2 的偶數。

6、由於 i * j = 168, j>=2,則 1 < i < 168 / 2 + 1。

7、接下來將 i 的所有數字迴圈計算即可。

但是我覺得有點難想到這個方法(如果在一點提示都沒有的情況下),演算法很巧妙。

#include

int main ()}

}return0;

}

bingo!

逃課學習,收穫快樂!

c語言10個經典小程式

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?1.程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。2.程式源 main 程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提1...

c語言10個經典小程式

程式1 題目 有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?1.程式分析 可填在百位 十位 個位的數字都是1 2 3 4。組成所有的排列後再去 掉不滿足條件的排列。2.程式源 複製 如下 main 程式2 題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時...

一名初學C 小菜鳥在牛客網上的一些錯題見解

1.識別符號問題 1.識別符號的第乙個字元必須是字母或下劃線,後面的字元可以是字母 數字或下劃線,不能為其它字元。2.識別符號的長度可以是乙個或多個字元,最長不允許超過32個字元。3.識別符號不能和c語言的關鍵字相同,也不能和使用者自定義的函式或c語言庫函式同名。2.linux下檔案的讀寫 chmo...