老曹的憂鬱

2021-07-13 23:48:11 字數 1767 閱讀 8573

description

我們的主角——老曹,現在十分憂鬱。原因是他在玩乙個困難的遊戲。

遊戲規則如下:

有(n+1)*n/2個圓盤,在平面上擺成了乙個變長為n個圓盤的等邊三角形。每個圓盤上標有乙個小寫字母(『a』_』z』),如下圖所示。

對於每個字母,當我們可以由標為這個字母的圓盤為頂點,構成等邊三角形時,我們稱這個字母為不和諧的。例如途中的a和c。

現在給你n和這個等邊三角形上的字母,要求哪些字母是不和諧的。

input

第一行:乙個整數,n(1<=n<=12)

第二行:(n+1)*n/2個小寫字母

output

一行:按字典序輸出所有不和諧的字母,如果沒有不和諧的字母,則輸出「harmonious」。

sample input

樣例輸入1:

aaaaaa

樣例輸入2:

abcdef

sample output

樣例輸出1:

a樣例輸出2:

harmonious

我們可以以最後一行的第乙個圓的圓心作為原點,規定向右、向上為x、y軸的正方向,圓的半徑為單位距離,建立笛卡爾(平面直角)座標系。

然後三重迴圈列舉同字母的點,判斷兩兩之間的距離是否相等。

關鍵在於怎樣求距離,可以先求出每個點的座標。

那麼,第x行第y個圓的圓心,在座標系中哪個點呢?

如上圖,我們很容易看出a點的橫座標是n+2y-x-2。

至於豎座標我們把ab分成相等的n-x段,每段根據勾股定理可以得出長度是3√

,豎座標就是3√

(n-x)。

當我們知道了每個點在座標系裡的位置後,就可以直接求點與點之間的距離,x1

→ x2=(x

1−x2

)(x1

−x2)

+(y1

−y2)

(y1−

y2)−

−−−−

−−−−

−−−−

−−−−

−−−−

−−−−

−−−−

−−√ 。

code:

#include

#include

#define fo(i,x,y) for(int i=x;i<=y;i++)

using

namespace

std;

struct pop

a[26][79];

int n,p,q,b[26];

char c;

int v(int x,int y,int i,int j)

void init();

void cc();

int main()

void init()

}}void cc()}}

}}if(!q) printf("harmonious");

}

老曹的憂鬱

題目描述 我們的主角 老曹,現在十分憂鬱。原因是他在玩乙個困難的遊戲。遊戲規則如下 有 n 1 n 2個圓盤,在平面上擺成了乙個變長為n個圓盤的等邊三角形。每個圓盤上標有乙個小寫字母 a z 如下圖所示。對於每個字母,當我們可以由標為這個字母的圓盤為頂點,構成等邊三角形時,我們稱這個字母為不和諧的。...

1313 老曹騎士 TJ

老曹騎士 standard io time limits 1000 ms memory limits 65536 kb detailed limits description 我們的主角 老曹隕落於西洋棋棋盤,成為了一位老曹騎士,於是,他開始走 日 字型路線。在一張n n的棋盤上,有k只 的河蟹,騎...

平淡的憂鬱

憂鬱似乎是屬於貴族的氣質,對於疲於奔命的窮人來說,憂鬱就近乎等同於鬱悶了。我窮,但我沒有疲於奔命,我很慶幸自己有一許平淡的憂鬱。平淡的憂鬱,就像現在這種感覺,心情是輕鬆的,思維是理智的,可以平和地記下這段簡單的文字。挫折,失落。憂鬱不再平淡,心情變得糟糕,情緒變得失控,思維變得混亂,感覺自己就是乙個...