Java吸血鬼數字
版權宣告:歡迎轉載,請註明沉默王二原創。 https://blog.csdn.net/qing_gee/article/details/50328679
很慚愧(其實沒什麼慚愧,水平就這樣),搞了半晌才寫出來了一個Java 版求四位吸血鬼數字的方法
吸血鬼數字是指位數為偶數的數字,可以由一對數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排序。
以兩個0結尾的數字是不允許的,例如,下列數字都是“吸血鬼”數字:
1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81
int len = 4;
// 求出四位值得範圍
int max = (int) (Math.pow(10, len) -1);
int min = (int) (Math.pow(10, len-1));
for (int num = min; num <= max; num++) {
// 過濾掉諸如60*50=3000這樣的數
if (num % 100 == 0) {
continue;
}
// 主要思路,分解四位數字,拿出來排列組合,然後根據條件a*b=c來篩選,費勁心思也就做到這程度了,真™想回家種地
List<String> list = Arrays.asList(String.valueOf(num).split(""));
List<String> ss = new ArrayList<String>();
for (int i = 1; i < list.size(); i++) {
for (int j = 1; j < list.size(); j++) {
if (j == i) {
continue;
}
List<String> halfs = new ArrayList<String>();
halfs.addAll(list);
halfs.remove(i);
halfs.remove(j - 1);
String a = list.get(i) + list.get(j);
if (!ss.contains(a)) {
for (int k = 1; k < halfs.size(); k++) {
String b = halfs.get(k) + halfs.get(halfs.size() - k);
if (!ss.contains(b)) {
ss.add(b);
}
int i1 = Integer.parseInt(a);
int i2 = Integer.parseInt(b);
if (i1 * i2 == num) {
System.out.print(a + "、" + b + "=" + num + ",");
}
}
}
}
}
}
得出結論如下:
21、60=1260,15、93=1395,41、35=1435,51、30=1530,21、87=1827,27、81=2187,86、80=6880,86、80=6880,
還多出了一組相同的資料,也是醉了,真灰心!
當然了,悻悻然的做出了結果,也算不負於王二(我,已經無法用第一人稱了)的智商。為了保持一顆上進的心,我還是看看高手們怎麼完成的。
參見AVA實現的吸血鬼數字演算法,高效率版本(已有網友給出演算法說明),說實話,看了幾遍也沒有看懂,真掃興,你要是看懂了,可以教一教王二這個榆木疙瘩。
相關文章
王二語錄
the best things in life,they are free,but if you wanna cry,cry on my shoulder.──《cry on my shoulder》
本文出自:【qing_gee的部落格】
相關文章
- 吸血鬼數字演算法演算法
- 暴力破解《網路吸血鬼3.3》 (9千字)
- 【Java】——猜數字遊戲Java遊戲
- Java 獲取Word字數Java
- 數字簽名(java) (轉)Java
- java從字串中提取數字Java字串
- java解決數字黑洞問題Java
- java.sql.SQLException: 數字溢位JavaSQLException
- 羅馬數字轉換阿拉伯數字(Java版,考慮較為全面)Java
- Java 新增、驗證PDF 數字簽名Java
- 【java】隨機生成6位的數字Java隨機
- Java加密技術(八)——數字證照Java加密
- 【Java基礎教程】用Java實現猜數字小遊戲Java遊戲
- 免費開源數字貨幣交易所、免費開源數字貨幣交易系統、Java開源數字貨幣交易所 、Java開源數字貨幣交易系統Java
- PAT1044火星數字(java實現)Java
- PAT1048數字加密(java實現)加密Java
- 1019 數字黑洞 (20 分)javaJava
- Java™ 教程(格式化數字列印輸出)Java
- java:識別符號 關鍵字 變數Java符號變數
- 題解1787:小O的數字 (Java描述)Java
- Java工具類 NumberUtils 對整型數字的引用Java
- 免費數字貨幣交易系統、java免費數字貨幣交易系統、免費數字資產交易系統、數字貨幣交易所開源Java
- Java中計算整數中唯一數字數量的3種方法Java
- Java入門教程五(數字和日期處理)Java
- JAVA版開源數字貨幣交易平臺Java
- java 數字金字塔,含詳細解說Java
- java判斷輸入的字串是否為數字Java字串
- Java 獲取PDF數字簽名證照資訊Java
- java使用RSA加密方式,實現數字簽名Java加密
- 圓圈中最後剩下的數字(Java實現)Java
- Java區分大小寫字母數字和符號Java符號
- RSA加密解密及數字簽名Java實現加密解密Java
- 如何基於Java解析國密數字證書Java
- java列印數字金字塔,適用於9以內的數Java
- 給定數字生成中文數字(MySQL)MySql
- 缺失的數字;及找數字分析
- 【原創】JAVA中令人眼花撩亂的數字魔法Java
- PAT1019 數字黑洞(java實現)Java