ブルーブリッジカップ2013試験問題-java逆転の価格札
1499 ワード
タイトル:逆さまの値札
李さんの店は他の店に置いてあるサンプルテレビを専門に売っています.サンプルテレビ専門店と呼ばれています.李さんは値段をはっきりさせ、便利にするために、あらかじめ作ったデジタルチューブのような値札を使って、色ペンで数字を塗るだけでいいです.(p 1.jpg参照).この値札には特徴があり、いくつかの数字に対して、逆さまに見ても合理的な数字です.例えば:1 2 5 6 8 9 0でもいいです.これでは、看板が倒れたら、完全に別の価格になる可能性があります.例えば:1958逆さまに掛けると:8561で、数千元も差がありますよ!!もちろん、逆さまに読むことができないことが多いです.例えば、1110ではできません逆さにして、0が開始数字にならないからです.ある日、ついに悲劇が起こった.ある店員はうっかり店のある2つの価格札を掛けてしまった.そしてこの2つの価格札のテレビはすべて売れました!幸いなことに、価格の出入りは大きくなく、そのうちの1つの価格札は2百余り弁償したが、もう1つの価格札は8百余り稼いで、総合的に見ると、かえって558元多く稼いだ.これらの情報に基づいて計算してください:賠償金のその価格札の正しい価格はいくらですか?答えは4桁の整数です.ブラウザで直接数字を提出してください.
注:解答プロセスやその他の補助説明クラスの内容はコミットしないでください.
考え方:4桁毎のループに対して、逆転可能な4桁を探索し、その後、前後の差額を計算し、2つの条件に合致する場合(-200多と+800多)にそれぞれ2つの配列が存在する、リサイクルして差額558のデータを得る.
李さんの店は他の店に置いてあるサンプルテレビを専門に売っています.サンプルテレビ専門店と呼ばれています.李さんは値段をはっきりさせ、便利にするために、あらかじめ作ったデジタルチューブのような値札を使って、色ペンで数字を塗るだけでいいです.(p 1.jpg参照).この値札には特徴があり、いくつかの数字に対して、逆さまに見ても合理的な数字です.例えば:1 2 5 6 8 9 0でもいいです.これでは、看板が倒れたら、完全に別の価格になる可能性があります.例えば:1958逆さまに掛けると:8561で、数千元も差がありますよ!!もちろん、逆さまに読むことができないことが多いです.例えば、1110ではできません逆さにして、0が開始数字にならないからです.ある日、ついに悲劇が起こった.ある店員はうっかり店のある2つの価格札を掛けてしまった.そしてこの2つの価格札のテレビはすべて売れました!幸いなことに、価格の出入りは大きくなく、そのうちの1つの価格札は2百余り弁償したが、もう1つの価格札は8百余り稼いで、総合的に見ると、かえって558元多く稼いだ.これらの情報に基づいて計算してください:賠償金のその価格札の正しい価格はいくらですか?答えは4桁の整数です.ブラウザで直接数字を提出してください.
注:解答プロセスやその他の補助説明クラスの内容はコミットしないでください.
考え方:4桁毎のループに対して、逆転可能な4桁を探索し、その後、前後の差額を計算し、2つの条件に合致する場合(-200多と+800多)にそれぞれ2つの配列が存在する、リサイクルして差額558のデータを得る.
public class t4 {
public static void main(String[] args){
int[] zh={0,1,2,-1,-1,5,9,-1,8,6}; // ,-1
int[] a=new int[4]; //
int[] b=new int[4]; //
int[] p1=new int[100]; // 800
int[] p2=new int[100]; // 200
int[] q=new int[100]; // 200
int index1=0;
int index2=0; //
boolean flag=true;
int k=0;
for(int i=1001;i<=9999;i++){ //
k=i;
for(int j=3;j>=0&&flag;j--){
a[j]=k%10;
if((b[3-j]=zh[a[j]])==-1){
flag=false;
}
k/=10;
}
if(flag==true){
k=0;
for(int u=0;u<4;u++){
k*=10;
k+=b[u];
}
k=k-i;
if(k>800&&k<900){
p1[index1]=k;
index1++;
}else if(k>-300&&k