フラクタル市 | |
|
問題の説明
都市計画は、都市建設では大きな問題です。残念ながら、建設の初めに多くの都市は、良い計画は、都市計画の展開後、ではなく、不十分な問題が表示されるようになりました。以下に示すように、そのような計画のフラクタル思想と呼ばれる都市:
都市規模の拡大後、フラクタル溶液は市内のビルの周りの方法を図に従って領域の元の都市構造と同じであり、街のレベルを向上させます。街の任意のレベルのために、我々は道路勾配に基づいて、左上の正方形のブロックから開始します。このプログラムは吸うが、二つのブロックAとBのNのレベルに開発された都市、番号の直線距離がある場合は、スタッフフラクタル計画部門は、まだ、知りたいです。中央ブロックとの間の距離からのブロックを指し、各ブロックの一辺の長さは10メートルの正方形です。
入力形式
テストデータの複数のセットを含む入力ファイルは、最初のラインTは、試験データの整数を表します。
三つの整数N、A、B、およびレベル2の都市を含む各試験ラインは、ブロックの数を表します。
出力フォーマット
各試験のために、別個の出力線に答えは、最も近い整数に丸め。
サンプル入力
サンプル入力1
。3
。1 1 2
2 16 1
3 4 33は、
サンプル入力2
2
3 46 56である
。3 21 42であります
サンプル出力
出力例1
10
30
50
出力例2
32
61であります
この問題は、私はあまりにも複雑QwQを探していました長い時間のようです...
影響を与えなかった順序を変更
他のコードを参照するには回答の可用性に関する一般的な議論として座標変換の寄与を考慮してください。
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineは長い長いっ int型T; LL、B、N。 LLのY1、X1; LLのX2、Y2; 二重DIST(YY LL、XXX LL、XX -1,11,11-のYYY) { 戻り SQRT((1.000)*(XX-XXX)*(XX-XXX)+(1.000)*(YY-YYY)*(yy- YYY) ); } ボイド DFS(LLのID、LL&X、LL&Y、LLのNUM) { X = 0、Yが= 0 ; もし(ID == 0 ) のリターン; LLのM =(1<< ID- 1 )。 LL D = Mの*のM。 LLのPOS = NUM / D。 NUM = NUM%D。 もし(POS == 0){DFS(ID- 1、X、Y、NUM)。int型 TT = X; X = Yであり; Yは、= }; TTの 場合(POSの== 1){DFS(ID- 1、X、Y、NUM); X = X; YはY + = M;} もし(POSを== 2){DFS(ID- 1、X、Y、NUM); X = X + M; Yは、Y + = mで;} もし(POSの== 3){DFS(ID- 1、X、Y、NUM)。INTの TTT = X; X = 2 * M- 1-y、yはM-= 1 - TTT;} リターン。 } int型のmain() { CIN >> T。 一方、(T-- ) { scanf関数(" %LLD%LLD%LLD "、&N、&、&B)。 X1 = Y1 = X2 = Y2 = 0 ; DFS(N、X1、Y1、 - 1 )。 DFS(N、X2、Y2、B - 1 )。 X1 * = 10 ; Y1 * = 10 ; X2 * = 10 ; Y2 * = 10 ; LL D =((1.000)*(DIST(X1、X2、Y1、Y2))+ 0.5000 )。 printf(" %LLDする\ n " 、D)。 } }