化學很神奇,以下是烷烴基。
假設如上圖,這個烷烴基有6個原子和5個化學鍵,6個原子分別標號1~6,然後用一對數字 a,b 表示原子a和原子b間有乙個化學鍵。這樣通過5行a,b可以描述乙個烷烴基。你的任務是甄別烷烴基的類別。
input:輸入第一行為資料的組數t(1≤t≤200000)。每組資料有5行,每行是兩個整數a, b(1≤a,b≤6,a ≤b),資料保證,輸入的烷烴基是以上5種之一首先,對於輸出,我們可以很容易的得到每乙個原子相連幾個化學鍵,然後通過觀察分析,以上5中同分異構體可以分為4大類,通過與兩個化學相連的原子個數有幾個來分類,n-hexane有四個與兩個化學鍵相連的原子,2,2-dimethylbutane有乙個與兩個化學鍵相連的原子,2,3-dimethylbutane不存在與兩個化學鍵相連的原子,而其餘兩個,都有兩個與兩個化學鍵相連的原子,所以剩餘的任務就是找到這兩類的不同之處。output:
每組資料,輸出一行,代表烷烴基的英文名
通過觀察,我們發現
這兩個結構在畫紅線的原子那裡結構是不同的,乙個與兩個 有與兩個化學鍵相連的原子 進行連線,而另乙個只有乙個,則我們可以通過它們相連的原子有幾個是有兩個化學鍵相連的來進行判斷。
首先我們可以定義乙個二維陣列,來儲存我們的輸入,然後在輸入的過程中,計算與兩個化學相連的原子個數,這樣就可以分出三類,然後若不能夠通過與兩個化學相連的原子個數來判斷,則通過迴圈找到與三個化學鍵相連的原子,然後找到兩個與兩個化學鍵相連的原子,然後在遍歷輸入的矩陣,看是否這兩個原子都與同乙個原子相連,如果是,就為3-methylpentane,否則為2-methylpentane。
對於這種題目,重要的是找到每一種結構的差別,然後可以根據這一差別,來分別出每一種結構。
#include
using
namespace std;
int a[7]
;//記錄每個數出現的次數
intmain()
for(
int i=
0;i<
5;i++
)for
(int i=
1;i<=
6;i++)}
if(temp==4)
//判斷
else
if(temp==1)
else
if(temp==0)
else
}for
(int i=
1;i<=
6;i++)}
for(
int i=hh1+
1;i<=
6;i++)}
int it=0;
for(
int i=
0;i<
5;i++
)//根據輸入的內容進行判斷if(
((store[i][0
]==hh)
&&(store[i][1
]==hh2))||
((store[i][0
]==hh2)
&&(store[i][1
]==hh)))
}if(it==2)
else
} temp=0;
}}
化學 烷烴基
有5種烷烴基,6個原子,5個化學鍵,用編號對表示化學鍵的位置 原子未預先編號 根據所給的化學鍵編號,輸出烷烴基型別。觀察烷烴基,按照各個原子連線的化學鍵數目區別,特徵如下 include include include using namespace std int t,a,b intmain vo...
確定烷烴基種類(列舉)
烷烴基有6個原子和5個化學鍵,6個原子分別標號1 6,然後用一對數字 a,b 表示原子a和原子b間有乙個化學鍵。這樣通過5行a,b可以描述乙個烷烴基 你的任務是甄別烷烴基的類別。原子沒有編號方法,比如 1 22 3 3 44 5 5 6和 1 32 3 2 44 5 5 6是同一種 input 輸入...
結構體的大小甄別
記憶體對齊 各種資料存放的位址要能夠整除該資料本身的位元組數 例如 char可存放在任意位址,short存放在能被2整除的位址,int存放在能被4整除的位址 如何判斷結構體的大小 1 先將每個成員的位元組數寫出,然後從第二個成員開始,將前面成員的總位元組數補齊成當前位元組數的倍數 2 結構體的總大小...