一個五位數字ABCDE*4=EDCBA,這五個數字不重複,請程式設計求出來.
一個五位數字ABCDE*4=EDCBA,這五個數字不重複,請程式設計求出來.
先給一個網友的純的推理過程:
ABCDE*4=EDCBA
很顯然,A不是1,就是2,為0就不是五位數,為> 2則乘積不會是五位數
因為4*E的個位數是A,則A=2
所以題目變成2BCDE*4=EDCB2
顯然,E是8(原因,乘以4個位為2的只有3,8,而根據高位2*4> =8,它只能為8
所以變成2BCD8 * 4 = 8DCB2
既然BCD8*4沒有進位,因此B只能是0,1,2
假設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,滿足
假設B=2,則2CD8 * 4= DC22, D=8或者9,根據C等於4*D+3的個位,可以得出C等於5或者9
所以等式必須為2588 *4 或者2998*4,很顯然都不滿足
所以只能是(A,b,C,d,e)=(2,1,9,7,8)
下面給出一個遍歷的C語言解法:
先給一個網友的純的推理過程:
ABCDE*4=EDCBA
很顯然,A不是1,就是2,為0就不是五位數,為> 2則乘積不會是五位數
因為4*E的個位數是A,則A=2
所以題目變成2BCDE*4=EDCB2
顯然,E是8(原因,乘以4個位為2的只有3,8,而根據高位2*4> =8,它只能為8
所以變成2BCD8 * 4 = 8DCB2
既然BCD8*4沒有進位,因此B只能是0,1,2
假設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,滿足
假設B=2,則2CD8 * 4= DC22, D=8或者9,根據C等於4*D+3的個位,可以得出C等於5或者9
所以等式必須為2588 *4 或者2998*4,很顯然都不滿足
所以只能是(A,b,C,d,e)=(2,1,9,7,8)
下面給出一個遍歷的C語言解法:
#include<stdio.h>
int calc()
{
int i;
for(i=20008;i<25000;i++)//A是2,E是8是很容易猜出來的
//從ABCDE*4=一個五位數可知,ABCDE<25000因為大於或等於25000的數乘以4是六位數
{
int right=0;
int left=i;
while(left!=0)
{
right=right*10+left;
left/=10;
}
if((i<<2)==right)//移位表翻倍
{
return i;
}
}
return -1;
}
void main()
{
printf("the result is :%d\n",calc());
}
如果要求:不準用for,while,if,switch語句????
只能用遞迴了。。。,這裡給出一個遞迴的演算法:
只能用遞迴了。。。,這裡給出一個遞迴的演算法:
#include<stdio.h>
int result(int i)
{
int a,b,c,d,e;
int left,right;
a=i/10000;
b=(i/1000);
c=(i/100);
d=(i/10);
e=i;
right=e*10000+d*1000+c*100+b*10+a;
left=i*4;
return ((right==left&&a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&i>10000)?i:result(i-1));
}
void main(void)
{
int i=25000;
printf("the result is :%d\n",result(i));
}
相關文章
- 匹配指定位數不重複數字
- 寫一個函式,輸入一個4位數字,要求輸出這4個數字字元函式字元
- js生成不重複數字陣列程式碼例項JS陣列
- 輸出一個百位數,1-5之間所有組合型別,數字不重複型別
- 一個整型陣列裡除了一個或者兩個或者三個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1)陣列時間複雜度
- 如何生成隨機不重複的11位數字隨機
- C++【生成16個不重複字母】(生成不重複隨機數)C++隨機
- C#判斷一個字串是否是數字或者含有某個數字C#字串
- js如何判斷一個變數是否是一個數字JS變數
- LeetCode3270[求出數字答案]LeetCode
- 求出陣列中出現次數大於一半的數字陣列
- 一個拖拉且錯誤的猜數字程式
- 基礎1:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?
- javascript判斷一個變數是否是數字JavaScript變數
- 有一組整數資料,全部除以一個整數a,使得餘數是同n種數字,如何計算出這個整數a的全部可能。
- HOME: Count Digits —— 計算字串中數字個數Git字串
- 數字查詢統計重複
- [work] python list中數字與一個數相乘Python
- 獲取小數點後面第一個數字程式碼例項
- 《Cracking the Coding Interview程式設計師面試金典》----從0到n中某個數字的個數View程式設計師面試
- 請給會計事項 RKU3 設定一數字域
- javascript檢測一個變數是否為數字或者數字字串JavaScript變數字串
- 一個猜數字輸贏的小遊戲遊戲
- Linux Shell程式設計(13)——數字常量Linux程式設計
- //編寫一個函式,傳入一個整數,將數字反轉,檢查數字是不是數字的2倍 果是則返回true,否則返回false函式False
- 印尼的未來:打造一個有彈性的數字國家
- 讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
- 統計字串中數字個數,並將數字字串形式輸出字串
- 每日一題:五 特別的數字每日一題
- 計算陣列中每個數字出現的次數陣列
- 請破破這個軟體 (129字)
- 數字設計ic晶片流程晶片
- mongodb怎麼統計不重複數量?MongoDB
- 統計一個字串出現頻率最高的字母/數字字串
- EXCEL快速提取中英文、數字的4個方法,總有一個適合你!Excel
- js如何判斷一個變數是數字還是數字字串JS變數字串
- 這不僅僅是另一個使用TensorFlow來做MNIST數字影象識別的教程
- 化工——一個走向數字化的成熟行業行業