http://blog.csdn.net/hortond/article/details/8887866
小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。
// 558 is not used - not work
http://www.zhuangjingyang.com/%E9%A2%A0%E5%80%92%E7%9A%84%E4%BB%B7%E7%89%8C.html
小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。
其标价都是4位数字(即千元不等)。
小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了(参见p1.jpg)。
这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!!
当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。
有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了。
庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。
请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?
答案是一个4位的整数,请通过浏览器直接提交该数字。
注意:不要提交解答过程,或其它辅助说明类的内容。
思路:
9 – 》 6
6-》 9
3 4 7 不可逆转。
首先是处理好每个数字的倒挂。然后判断下就可以了。
-- find all candidate prices (its reverse - it [-200 , -300], [800, 900]), find a pair(pre sort), its sum is 558.// 558 is not used - not work
public static void main(String[] args) { DecimalFormat format = new DecimalFormat("0000"); String num = ""; for (int n = 1000; n < 10000; n++) { num = format.format(n); int numChange = change(num.toCharArray()); if(numChange<1000){ continue; } if(String.valueOf(numChange).contains("3")){ continue; }// check 3, 4, 7 first if(String.valueOf(numChange).contains("4")){ continue; } if ((n - numChange) >= 200 && (n - numChange) <= 300) { System.out.println(n); break; } } } private static int change(char[] charArray) { for (int i = 0; i < charArray.length; i++) { if (charArray[i] == '6') { charArray[i] = '9'; } else if (charArray[i] == '9') { charArray[i] = '6'; } } char[] Array2 = new char[charArray.length]; for (int i = 0; i < charArray.length; i++) { Array2[i] = charArray[charArray.length-1-i]; } String str = String.valueOf(Array2); return Integer.valueOf(str); }