2013年藍橋杯JavaA組題4(顛倒的價牌)
題目標題: 顛倒的價牌
小李的店裡專賣其它店中下架的樣品電視機,可稱為:樣品電視專賣店。其標價都是4位數字(即千元不等)。小李為了標價清晰、方便,使用了預製的類似數碼管的標價籤,只要用顏色筆塗數字就可以了。
這種價牌有個特點,對一些數字,倒過來看也是合理的數字。如:1 2 5 6 8 9 0 都可以。這樣一來,如果牌子掛倒了,有可能完全變成了另一個價格,比如:1958 倒著掛就是:8561,差了幾千元啊!!
當然,多數情況不能倒讀,比如,1110 就不能倒過來,因為0不能作為開始數字。
有一天,悲劇終於發生了。某個店員不小心把店裡的某兩個價格牌給掛倒了。並且這兩個價格牌的電視機都賣出去了!
慶幸的是價格出入不大,其中一個價牌賠了2百多,另一個價牌卻賺了8百多,綜合起來,反而多賺了558元。
請根據這些資訊計算:賠錢的那個價牌正確的價格應該是多少?
答案是一個4位的整數,請通過瀏覽器直接提交該數字。
public class Main04 {
public static void main(String[] args){
System.out.println(reverse("1958"));
// 列舉四位數,簡單篩選
ArrayList<Price> a1 = new ArrayList<Price>();
ArrayList<Price> a2 = new ArrayList<Price>();
//建立好兩個ArrayList
for(int i = 1000; i < 10000; i++){
// 將其顛倒,和原價做差,將賠200多的放入一個集合,將賺800多放入一個集合
String s = ""+i;
//轉換成字串
if (s.contains("3") || s.contains("4") || s.contains("7")) continue;
//去掉字串中的 3,4,7
String re_s = reverse(s);
//呼叫reverse 實現反轉
int i1 = Integer.parseInt(re_s);
//將數字字串轉為數字
int plus = i1 - i;
if (plus > -300 && plus < -200) a1.add(new Price(i, plus));
// 將虧錢的物件放入a1陣列中, 包含原本的錢和賺的錢
if (plus > 800 && plus < 900) a2.add(new Price(i, plus));
// 將賺錢的物件放入a2陣列中, 包含原本的錢和虧的錢
}
// 遍歷兩個集合兩兩組合、檢查是否相加位558
for(Price p1 : a1){
for(Price p2 : a2){
if (p1.plus+p2.plus==558){
System.out.println(p1.p + " "+p1.plus);
System.out.println(p2.p + " "+p2.plus);
}
}
}
//輸出結果
}
// reverse用於反轉
public static String reverse(String s){
char[] ans = new char[s.length()];
for(int i = s.length()-1,j=0; i>=0; i--,j++){
char c = s.charAt(i);
if(c == '6') ans[j]='9';
else if (c=='9')ans[j]='6';
else ans[j]=c;
}
return new String(ans);
}
// Price 物件,裡面有原價和差價的屬性
public static class Price{
int p; //原價
int plus; //顛倒價-原價
public Price(int p, int plus) {
this.p = p;
this.plus = plus;
}
}
}
細節知識補給
1、轉化為整型數字
(1)Integer.parseInt(String s) ,程式碼示例如下:
public class Test {
public static void main(String args[]){
String s = "123";
int num = Integer.parseInt(s);
int sum = num + 100;
System.out.println("Result is: "+sum); // 輸出結果為:Result is: 223
}}
(2)Integer.valueOf(String s),程式碼示例如下:
public class Test2 {
public static void main(String args[]){
String s = "-100";
int num = Integer.valueOf(s);
int sum = num + 101;
System.out.println("Result is: "+sum); // 輸出結果為:Result is: 1
} }
2、轉化為浮點型數字
(1)Float.parseFloat(String s),程式碼示例如下:
public class Test {
public static void main(String args[]){
String s = "123.11";
float num = Float.parseFloat(s);
float sum = num + 100;
System.out.println("Result is: "+sum); // 輸出結果為:Result is: 223.11
}}
(2)Double.parseDouble(String s),程式碼示例如下:
public class Test2 {
public static void main(String args[]){
String s = "100.01";
double num = Double.parseDouble(s);
double sum = num + 100;
System.out.println("Result is: "+sum); // 輸出結果為:Result is: 200.01
}}
3、java中整形、浮點型別轉化為字串
public class Test {
public static void main(String args[]){
int i = 11;
String s = i + ""; // 方法一
String s = String.valueOf(i); // 方法二
String s = Integer.toString(i); // 方法三
} }
4、Java中判斷字串是否為數字:
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
} }
return true;
}
5、java中contains方法是判斷是否存在包含關係
java中contains方法是判斷是否存在包含關係,比如說a =[1,2,3,4], b=1那麼a就包含b
contains返回的是布林型別true 和false,包含的話就返回true,不包含的話就返回false
public class pratise {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "l love feng ye";
String b = "love";
boolean c = a.contains(b);
System.out.println(a.contains(b));
//assertEquals(a.contains(b), "true");
}
}
相關文章
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 2013藍橋杯題解c++A組C++
- 藍橋杯真題
- 2013藍橋杯題解c組C++C++
- 藍橋杯模板(二)python組Python
- 藍橋杯模板(三)python組Python
- 藍橋杯javaB組備賽Java
- 藍橋杯-日期問題
- 藍橋杯-座次問題
- TODO -藍橋杯2018年A組-付賬問題
- 2017省賽藍橋杯B組
- 2018藍橋杯省賽B組
- 24藍橋杯-網路安全組
- 藍橋杯
- 藍橋杯2023年A組-試題A-幸運數
- 藍橋杯4-R格式-2
- 2013年藍橋杯真題
- 藍橋杯全排列專題
- 藍橋杯2023年A組-試題D-平方差
- 藍橋杯題目編號1265
- 藍橋杯例題-快速分揀
- 藍橋杯真題:純質數
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 藍橋杯注意的地方
- 藍橋杯2023年A組-試題E-顏色平衡樹
- 藍橋杯2023年A組-試題B-有獎問答
- 第十三屆藍橋杯省賽A組
- 第14屆藍橋杯B組國賽
- 藍橋杯模擬題——長草問題
- 藍橋杯省賽真題2013題解
- 【題解】爬山 藍橋杯2024省B
- 【藍橋杯】練習題目彙總
- Java藍橋杯14年第五題Java
- 藍橋杯刷題-乘積尾零
- 藍橋杯-分巧克力
- 藍橋杯-N皇后
- 藍橋杯 買瓜
- 藍橋杯 剪格子