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