藍橋杯:顛倒的價牌
阿新 • • 發佈:2019-02-16
顛倒的價牌
小李的店裡專賣其它店中下架的樣品電視機,可稱為:樣品電視專賣店。
其標價都是4位數字(即千元不等)。
小李為了標價清晰、方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了(參見p1.jpg)。
這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另一個價格,比如:1958 倒著掛就是:8561,差了幾千元啊!!
當然,多數情況不能倒讀,比如,1110 就不能倒過來,因為0不能作為開始數字。
有一天,悲劇終於發生了。某個店員不小心把店裡的某兩個價格牌給掛倒了。並且這兩個價格牌的電視機都賣出去了!
慶幸的是價格出入不大,其中一個價牌賠了2百多,另一個價牌卻賺了8百多,綜合起來,反而多賺了558元。
小李的店裡專賣其它店中下架的樣品電視機,可稱為:樣品電視專賣店。
其標價都是4位數字(即千元不等)。
小李為了標價清晰、方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了(參見p1.jpg)。
這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另一個價格,比如:1958 倒著掛就是:8561,差了幾千元啊!!
當然,多數情況不能倒讀,比如,1110 就不能倒過來,因為0不能作為開始數字。
有一天,悲劇終於發生了。某個店員不小心把店裡的某兩個價格牌給掛倒了。並且這兩個價格牌的電視機都賣出去了!
慶幸的是價格出入不大,其中一個價牌賠了2百多,另一個價牌卻賺了8百多,綜合起來,反而多賺了558元。
請根據這些資訊計算:賠錢的那個價牌正確的價格應該是多少?
直接採用暴力搜尋
public class Main { public static void main(String[] args) { int x=0,y=0; int x1[]=new int[24]; int x2[]=new int[24]; int y1[]=new int[12]; int y2[]=new int[12]; int l[]={0,1,2,5,6,8,9}; for(int a=1;a<7;a++){ int a1=l[a]; if(l[a]==6) a1=9; if(l[a]==9) a1=6; for(int b=0;b<7;b++){ int b1=l[b]; if(l[b]==6) b1=9; if(l[b]==9) b1=6; for(int c=0;c<7;c++){ int c1=l[c]; if(l[c]==6) c1=9; if(l[c]==9) c1=6; for(int d=1;d<7;d++){ int d1=l[d]; if(l[d]==6) d1=9; if(l[d]==9) d1=6; int k=l[a]*1000+l[b]*100+l[c]*10+l[d]; int h=d1*1000+c1*100+b1*10+a1; if(k-h>200&&k-h<300){ x1[x]=k-h; x2[x]=k; x++; } if(h-k>800&&h-k<900){ y1[y]=h-k; y2[y]=k; y++; } } } } } for(int i=0;i<24;i++){ for(int j=0;j<12;j++){ if(y1[j]-x1[i]==558) System.out.println(x2[i]); } } } }