ブルーブリッジカップ2013-地方大会-C / C ++ - 4つの質問のグループ

トピック
のタイトル:逆さま値札


     マイクのテレビ独占サンプル・ストア他の店の棚を呼び出すことができます。サンプルのTV店。

    その価格は、4桁の数字(すなわち千ドル)です。

    李注文価格(p1.jpgを参照)、明確な使いやすいと長く、それに描かれたカラーデジタルペンのように、プレハブデジタル類似の値札です。

    この価格タグは、いくつかの数字上の特徴を持っている、逆さまには、合理的な数です。以下のような:1256890ことができます。その結果、符号がぶら下がっている場合、それは例えば、別の価格になっていることがあります。1958年には、逆さまにぶら下がっている:8561を、数千ドルああの違い!

    0は数字で始めることはできませんので、もちろん、ほとんどの場合、読み取りに失敗し、例えば、1110年には、元に戻すことはできません。

    ある日、悲劇が起こりました。店員が誤って2つのダウンがハングアップするために値札を置きます。どちらも価格とブランドのテレビセットが完売します!

    幸い、価格が異なります大幅の一つは、200万人以上の値札、値札を失ったが、別の800稼いだ、一緒に、しかし、558元を稼ぎます。

    この情報に基づいて、計算してください:赤字値札を正しい価格はどのくらいであるべきこと?


答えは整数4で、ブラウザから直接番号を提出してください。
注:クラスの内容を説明するには、プロセス、またはその他の援助への回答を提出しないでください。

答え

9088

コード

 

1  / * 2013-蓝桥杯-省-A-4 * /  
2の#include <iostreamの>
 3の#include <マップ>
 4の#include <ベクトル> 
 5の#include <アルゴリズム>
 6  使って 名前空間STDを、
7マップ< チャーチャー > rev_map。
8  チャー NUM [ 7 ] = { ' 1 '' 2 '' 5 '' 6 '' 8 ''' 0 ' }。
9ベクトル< INT > g800p。
10マップ< int型int型 > g800p_profmap。
11ベクター< INT > l200p。
12マップ< int型int型 > l200p_profmap。
13  構造体のval {
 14      チャー A [ 4 ]。
15  }。
16  
17  ボイドのinit(){
 18      rev_map [ ' 1 ' ] = ' 1" ;
19      rev_map [ ' 2 ' ] = ' 5 ' 20      rev_map [ ' 6 ' ] = ' 9 ' 21      rev_map [ ' 8 ' ] = ' 8 ' 22      rev_map [ ' 9 ' ] = ' 6 ' 23      rev_map [ ' 0 ' ] = ' 0 '   INT str2int(CHAR A []){
 26      のint TEMP = 0 27      TEMP = [ 0 ] - ' 0 ' + 10 *([ 1 ] - ' 0 ')+ 100 *([ 2 ] - ' 0 ')+ 1000年 *([ 3 ] - ' 0 ' ) ;
28      戻り温度;
29  }
 30の 空隙 DFS(ヴァルCUR、INT POS){
 31      もし(POS == 4 ){
 32          であれば(cur.a [ 0 ] == ' 0 ' || cur.a [ 3 ] == ' 0 ' ){
 33              リターン34          } {
 35              チャー B [ 4 ]。
36              INT bef_val = str2int(cur.a)。
37              reverse_copy(cur.a、cur.a + 4 、B)。
38              B [ 0 ] = rev_map [B [ 0 ]]。
39              B [ 1 ] = rev_map [B [1 ]。
40              B [ 2 ] = rev_map [B [ 2 ]。
41              B [ 3 ] = rev_map [B [ 3 ]。
42              INT aft_val = str2int(B)。
43              INT教授= aft_val- bef_val。
44              であれば(教授> 800 &&教授< 900 ){
 45                  // COUT << "を見つける:(800)、" << bef_val << ENDL。
46                  // coutの<<教授<<てendl; 
47                  g800p.push_back(bef_val)。
48                  g800p_profmap [bef_val] = 教授。
49             }
 50              であれば(教授は、< - 200 &&教授- > 300 ){
 51                  // COUT << "を見つける:(-200)" << bef_val << ENDL。
52                  // coutの<<教授<<てendl; 
53                  l200p.push_back(bef_val)。
54                  l200p_profmap [bef_val] = 教授。
55              }
 56              
57              リターン58          }
 59      } {
 60          のためにINTは iは= 0 ; I < 7 ; I ++ ){
 61             cur.a [POS] = NUM [I]。
62の              DFS(CUR、POS + 1 )。
63          }
 64      }
 65  }
 66  INT メイン(){
 67      のinit();
68      ヴァル・A;
69の      DFS(0 )。
70      裁判所未満<< " OK DFS " << てendl;
71      のために(ベクトル< INT > ::イテレータiter1 = g800p.begin()!; iter1 = g800p.end(); iter1 ++ ){
 72          のために(ベクトル< INT > ::イテレータiter2 = l200p.begin(); iter2! = g800p.end(); iter2 ++){
 73          であれば(g800p_profmap [* iter1] + l200p_profmap [* iter2] == 558 ){
 74              COUT << * iter2 << "  " << ENDL。
75              ブレーク;
76              }
 77          }
 78      }    
 79      リターン 0 80  } 
 81  

 

おすすめ

転載: www.cnblogs.com/memocean/p/12397295.html