小李的店裡專賣其它店中下架的樣品電視機,可稱為:樣品電視專賣店。
其標價都是4位數字(即千元不等)。
小李為了標價清晰、方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了(參見p1.jpg)。
這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另乙個**,比如:1958 倒著掛就是:8561,差了幾千元啊!!
當然,多數情況不能倒讀,比如,1110 就不能倒過來,因為0不能作為開始數字。
有一天,悲劇終於發生了。某個店員不小心把店裡的某兩個**牌給掛倒了。並且這兩個**牌的電視機都賣出去了!
慶幸的是**出入不大,其中乙個價牌賠了2百多,另乙個價牌卻賺了8百多,綜合起來,反而多賺了558元。
請根據這些資訊計算:賠錢的那個價牌正確的**應該是多少?
答案是乙個4位的整數,請通過瀏覽器直接提交該數字。
注意:不要提交解答過程,或其它輔助說明類的內容。
//顛倒的價牌
#include
#include
using
namespace std;
intmain()
;int les =0;
int mor =0;
// 儲存的是相減的兩數之差的數 ,即存的是差
int less[
9999];
int more[
9999];
// 儲存的是滿足條件的兩種原來的數
int bfless[
9999];
int bfmore[
9999];
int sum,rsum,subles,submor;
// 最後一位跟第一位都不能是0
for(
int i=
0;i<
6;i++
)for
(int j=
0;j<
7;j++
)for
(int k=
0;k<
7;k++
)for
(int l=
0;l<
6;l++
)// 因為賺了800多,所以 後來的**高 if(
(rsum-sum)
<
900&&
(rsum-sum)
>
800)
}for
(int i=
0;i)for
(int j=
0;j(more[j]
-less[i]
==558
)return0;
}
由題意可知,只有數字1,2,5,6,8,9,0 才可以滿足條件,即被顛倒了也不會輕易發現出來,其餘數字不能被顛倒
組成的**,第一位跟最後一位一定不可能是0,第一位是0的話,不符合千元不等,最後一位如果是0的話顛倒過來的時候會被發現
利用乙個二維陣列儲存顛倒前和後的資料。int a[2][7]=;
但是要注意獲取顛倒的數字的同時,注意各個數字的順序不一樣!
sum = a[0][i]*1000+a[0][j]*100+a[0][k]*10+a[0][l];
rsum = a[1][l]*1000+a[1][k]*100+a[1][j]*10+a[1][i];
其實這題不難,暴力解法就可以
四位數,每位數都有7種可能,因為只有7種數字才是滿足的,還要特別注意0**不能放
獲取顛倒前後的數字,要同時注意顛倒後的數字是啥,以及四位數的順序會發生改變,即誰乘於1000,100,10的順序全都不一樣了
注意虧了200多,一定是原來的**高於被顛倒的**,賺了800多則一定是被顛倒的**高於原來的**
用les,mor自增來實現逐一增加對應的陣列的元素,後面再用一次是否等於558的時候就可以判斷兩個for迴圈的長度。
必要的時候可以用set容器避免重複冗餘(還可以按順序哦)
注意陣列命名的恰當性,以及寫的過程要必要的注釋,不然自己給自己繞暈了
顛倒的價牌 藍橋杯
這是2013年藍橋杯全國軟體大賽預賽a組 c c 組 第四題,為填空題,思路是列舉。該題的總體思路是列舉所有的 當然這個過程要排除不符合要求的解。倒過來看數字合理的數字有 1,2,5,6,8,9,0。而數字的值改變的只有 6變為9,9變為6。雖然最後的結果能夠得到好幾組解,但巧妙的是賠錢的那個加派的...
顛倒的價牌 藍橋杯
小李的店裡專賣其它店中下架的樣品電視機,可稱為 樣品電視專賣店。其標價都是4位數字 即千元不等 小李為了標價清晰 方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了 參見p1.jpg 這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如 1 2 5 6 8 9 0 都可以。這樣一來...
藍橋杯 顛倒的價牌
小李的店裡專賣其它店中下架的樣品電視機,可稱為 樣品電視專賣店。其標價都是4位數字 即千元不等 小李為了標價清晰 方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了 這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如 1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,...