話題の簡単な分析を見つけることができます:
- 最初の数は123であり、最小
- 333までの最初の数字は、次に大きい第3の数は4桁です
だから、これを行うことができます:
1 のための(int型 A = 100 ; <= 333 ; ++ ){ 2 B = 2 * 。 3 、C = 3 * 4 ... 5 }
その後、我々は、各番号の各桁を分離することができ、アレイ内のタグと一緒に、出てきました:
1 ながら(!= 0 ){ 2 フラグ[%10 ] = 1 ; 3 / = 10 。 4 }
コード:
1の#include <ビット/ STDC ++ H.> // ユニバーサルヘッダ 2 使用して 名前空間STD; 3 BOOLフラグに[ 15 ]; // タグ・アレイ 。4 ボイド F(INT A){ // 空隙型、値が返されない 。5 しばらく(a!= 0){ // 桁の分解 6。 フラグに[%10 ] = 1 ; 7 A / = 10 ; 8 } 。9 10 / * 。11 Iは元々書き込まれ、これは、ラインであり、私が個人的に上記のことをお勧めします 12 13である 。フラグ[10%] = 1で、 14 フラグに[%100%10] = 1; 15 フラグに[A / 100] = 1; 16 * / 17 リターン; 18である } 。19 INT メイン(){ 20は INT 、B、C、 21は BOOL X = 0 ; 22である ため(A = 123 ; <= 333 ; ++){ // 列挙 23は X = 0 ; 24 B = A * 2 ; 25 C = A * 3。; 26は // 別の番号を生成する2つの 27 F(A); F(B)、F(C); // 関数を呼び出す 28 29 のために(INTは I = 1。 ; I <= 9 ; I ++ ){ 30は、 IF(!フラグに[I]は= 1 ){ 31は、 Xは= 0 ; 32 BREAK ; // ループのうち 33である } 34である } 35 36 IF(X)COUT << << A ' ' << << B ' ' << C << ENDL; // 出力 37 のmemset(のフラグ、0、10); // リセットフラグアレイ10は、()フラグにはsizeofに変更することができる 38である } 39 リターン 0 ; 40 }
また、重複を防ぐために、私は静かに、コードで小さなミスを残し、あなたの友人を見て、直接提出することができます!
PS:あなたがエラーを見つけた場合は、直接コードを奪うことができます