I、題し
マイクのテレビ独占サンプル・ストア他の店の棚を呼び出すことができます。サンプルのTV店。
その価格は、4桁の数字(すなわち千ドル)です。
明瞭のLi価格、利便性、予め形成された同様のデジタルを使用して、価格タグの限りデジタルカラーペンを塗装することができるように(図)。
この価格タグは、いくつかの数字上の特徴を持っている、逆さまには、合理的な数です。以下のような:1256890ことができます。その結果、符号がぶら下がっている場合、それは例えば、別の価格になっていることがあります。1958年には、逆さまにぶら下がっている:8561を、数千ドルああの違い!
0は数字で始めることはできませんので、もちろん、ほとんどの場合、読み取りに失敗し、例えば、1110は、元に戻すことはできません。
ある日、悲劇が起こりました。店員が誤って2つのダウンがハングアップするために値札を置きます。どちらも価格とブランドのテレビセットが完売します!
幸い、価格が異なります大幅の一つは、200万人以上の値札、値札を失ったが、別の800稼いだ、一緒に、しかし、558元を稼ぎます。
この情報に基づいて、計算してください:赤字値札を正しい価格はどのくらいであるべきこと?
答えは整数4で、ブラウザから直接番号を提出してください。
注:クラスの内容を説明するには、プロセス、またはその他の援助への回答を提出しないでください。
第二に、アイデア
デジタル1256890は逆に、だけ6,9差がある逆のことができます。
暴力の直接列挙
第三に、問題解決
#include <iostream> using namespace std; int main() { int num1[7]={0,1,2,5,6,8,9};//价牌包含的数字 int num2[7]={0,1,2,5,9,8,6};//价牌翻转对应的数字 int profit1[1111][2];//利润1 int profit2[1111][2];//利润2 int before_reverse;//颠倒前 int after_reverse;//颠倒后 int i=0; int j=0; for (int a=1;a<7;a++) //从1开始,第一位数字不可以是0 { for (int b=0;b<7;b++) { for (int c=0;c<7;c++) { for (int d=0;d<7;d++) { before_reverse=num1[a]*1000+num1[b]*100+num1[c]*10+num1[d]; after_reverse=num2[d]*1000+num2[c]*100+num2[b]*10+num2[a]; //因为是颠倒之后所以第一位可以是0 if(after_reverse-before_reverse > -300 && after_reverse-before_reverse < -200) //在200-300范围内,我们以正数为准 { profit1[i][0]=before_reverse; profit1[i][1]=after_reverse-before_reverse; i++; } else if (after_reverse-before_reverse > 800 && after_reverse-before_reverse < 900) //在800-900范围内 { profit1[j][0]=before_reverse; profit2[j][1]=after_reverse-before_reverse; j++; } } } } } int answer=0; for (int a=0;a<i;a++) { for (int b=0;b<j;b++) { if(profit1[a][1]+profit2[b][1]==558) { answer = profit1[a][0]; } } } cout << answer << endl; return 0; }
第四に、結果
9088
プロセスは、終了コードを終了0