Week2實驗 A 化學 模擬

2021-10-03 11:28:46 字數 1573 閱讀 4549

包含6個原子和5個化學鍵的烷烴基共有5種,用1-6標號6個原子,然後用一對數字a,b表示原子a和原子b之間有乙個化學鍵。給定5行a,b,判斷出它的類別,輸出其化學名稱(見下圖)。原子沒有標號方法,即同乙個原子可能標號為1,也可能為2,依次類推。

首先找出5種類別之間較大的區別:n-類的各原子鍵數分別為1,2,2,2,2,1,即有2個1鍵原子,4個2鍵原子;2-類和3-類都有3個1鍵原子,2個2鍵原子,1個3鍵原子,需要特判;2,3-類有4個1鍵原子和2個3鍵原子;2,2-類有4個1鍵原子,1個2鍵原子和1個4鍵原子。

於是應先計算出所給烷烴基各個原子的鍵數,如果是2-類或3-類要特判:找到其3鍵原子,判斷其三端共有幾個2鍵原子或3鍵原子。(也可以通過判斷三端的1鍵原子個數來得出結論)若有2個2(3)鍵原子,則為3-類;若有1個2(3)鍵原子,則為2-類。

計算原子鍵數時,先將5個化學鍵的兩端原子存入a[5]和b[5]中,然後用yuanzi[7]陣列來遍歷計算6個原子對應鍵的個數。後用jian[5]陣列來計算i鍵原子有多少個。之後便是判斷部分。

2-類與3-類的特判:首先找到3鍵原子,記為middle,然後在化學鍵的兩端原子中尋找它鄰接的另乙個原子,記為next,然後遍歷尋找next的鄰接原子(且不為middle),如果有,則next為2(3)鍵原子,sum++。找完middle的三端原子後,根據2(3)鍵原子個數sum判斷即可。

一道模擬題,首先要讀懂題,找出5種類別之間的較大區別,然後根據這種區別來做題。

#include

using

namespace std;

intmain()

;//6個原子對應鍵的個數

for(

int j=

0; j<

5; j++

)int jian[5]

=;//鍵為i個的原子個數

for(

int j=

1; j<

7; j++

)//判斷

if(jian[1]

==2&&jian[2]

==4) cout<<

"n-hexane"

<

else

if(jian[1]

==4&&jian[2]

==1&&jian[4]

==1) cout<<

"2,2-dimethylbutane"

<

else

if(jian[1]

==4&&jian[3]

==2) cout<<

"2,3-dimethylbutane"

<

else

//判斷2-還是3-,找到3鍵原子,判斷其三端各有幾個原子}}

if(sum==

2) cout<<

"3-methylpentane"

<

else

if(sum==

1) cout<<

"2-methylpentane"

<

}

A 化學(Week2 模擬)

題目敘述 化學很神奇,以下是烷烴基。假設如上圖,這個烷烴基有6個原子和5個化學鍵,6個原子分別標號1 6,然後用一對數字 a,b 表示原子a和原子b間有乙個化學鍵。這樣通過5行a,b可以描述乙個烷烴基 你的任務是甄別烷烴基的類別。原子沒有編號方法,比如 1 22 3 3 44 5 5 6和 1 32...

Week2實驗 A 化學

問題描述 有六個原子,其中原子隨意編號,給定五條原子之間相連的邊,判斷輸入結構是下圖的哪一種 思路 很顯然可以用每個原子的度來判斷,但是有兩個結構的最大度數都是3,3 methy 和 2 methy 進一步判斷發現3 methy連線了兩個度為2的原子,根據此就能區分這兩個。最初的 比較繁瑣,後來經過...

Week2實驗A題 化學

化學很神奇,以下是烷烴基。你的任務是甄別烷烴基的類別。原子沒有編號方法。輸入 輸入第一行為資料的組數t 1 t 200000 每組資料有5行,每行是兩個整數a,b 1 a,b 6,a b 資料保證,輸入的烷烴基是以上5種之一 輸出 每組資料,輸出一行,代表烷烴基的英文名 樣例 input 21 2 ...