關於ABCDE 4 EDCBA 問題

2021-04-26 07:39:24 字數 1328 閱讀 6394

題目:

abcde*4=edcba

a、b、c、d、e 分別代表5個整數 且不重複

這是一道比較簡單的程式設計題

下面給出乙個遍歷的c語言解法:

#include

int calc ()

if ( (i << 2) == right )

}return -1;

}void main(void)

但這種求法明顯存在很多問題 為了獲得更高的效能 我們完全可以先通過邏輯判斷 去除掉一些明顯無用的情況

以下是一些邏輯分析:

1.abcde這5個數多不能重複

2.abcde*4=edcba 很顯然,a不是1,就是2,為0就不是五位數,如果大於2則乘積不會是五位數 因為4*e的個位數是a,則a只能是2

所以題目變成2bcde*4=edcb2

3.顯然,e是8,原因是,乘以4個位為2的只有3,8,而根據高位2*4> =8,它只能為8

所以變成 2bcd8   *   4   =   8dcb2

4.注意到c那一位先後沒有變化 所以 c其實只能是3 6 9 因為必須滿足 c*4 以後的餘數+前一位的進製還是c 很容易排除掉其他的數(例如:如果是7 則 7*4=28 進製2 餘數8>7了 則不可能滿足條件 )

5.既然bcd8*4沒有進製,因此b只能是0,1

假設b=0,則cd8*4=dc02,   4*d的尾數必須為7,這肯定不可能

假設b=1,則1cd8*4   =   dc12,4*d的個位數為8,d必然=7,因為1*4> 2,1c78*4=7c12   c*4=30+c-3,   c=9,滿足

所以等式必須為2588*4   或者2998*4,很顯然都不滿足

所以只能是(a,b,c,d,e)=(2,1,9,7,8)

實際上 通過分析 我們完全可以從c入手從第4步開始 來程式設計解決這個問題  b只能是0 1 c只能是3 6 9 情況就減少到 36種了 相比之前的 100000-10001種情況 要快不知道多少

對於上面的第5步 是其他網友的解法 在這裡我有一種從c入手的邏輯判斷方法

已知 2bcd8   *   4   =   8dcb2 c=3或6或9

當c=3時 3*4=12%10=2 即需要d進1位 進1位的話 即d*4+3是個1x的數字  即d能取 4、可是 b只能是0 1  所以 這種情況不行

當c=6時 6*4=24%10=4 即需要d進2位 即d*4+3是個2x的數字 d只能取5、 可是 b只能是0 1 這樣不行

當c=9時 9*4=36%10=6 即需要進3位 即 d*4+3是個3x的數字 d只能取 6 7 9 可是 b只能是0 1 這樣取d=7 即得到正確結果(a,b,c,d,e)=(2,1,9,7,8)

關於資料加密問題(4)

本文介紹rsa,aes加密方式。rsa是一種非對稱加密演算法,使用rsa加密需要一對金鑰 公鑰,私鑰,公鑰公開,私鑰只能自己知道。關於rsa存在兩種使用方式。aes是一種對稱加密方式,加密與解密使用同一種金鑰即可。1.公鑰加密私鑰解密 裝置a存在公鑰與私鑰,將公鑰開放給裝置b,b裝置需要傳送資料,使...

關於EXYNOS4除錯的問題

一般乙個普通的字元類裝置驅動要經歷下面的幾個步驟 整個流程如下 標頭檔案 include include include include include include include include include 整個驅動模組大框架 module init scdev init 申請裝置號 nu...

關於log4j的配置問題

每次開啟tomcat控制台的時候,總是會出現初始化log4j的提示,今天決心把問題解決掉。在web inf classes 中新建 log4j.properties 檔案,加入以下 便能實現將錯誤資訊在後台顯示並寫入到日誌檔案 jkpt two.log 中 log4j.rootlogger erro...