早上睡過頭了,差點遲到....
第一題比較簡單,列出形似 AB*CD=BA*DC 形式的所有等式,每個字母代表一個數字。 本人的做法是:
設兩個數字 int X、Y,即 X=AB, Y=CD, 那麼 BA=X/10+X%10*10 CD同上。 然後判斷 AB*CD==BA*DC即可《此為送分題,本人的代碼就不貼出來了》第二題稍微有些難度: 有變數 n=786245613984 讓求出刪除其中8個數字以後,按原序列的最小數字,並按原序列順序輸出被刪除的數字與 刪除後的最小數字 中間用逗號相隔。題目提示可以用字元數組求解,我依然用int數組求解 ,分析:已知:有變數 n=786245613984目標:讓求出刪除其中8個數字以後,按原序列排序的最小數字,附加結果:並按原序列輸出被刪除的數字與 刪除後的最小數字 中間用逗號相隔
解釋:我認為,最高位的數字越小,那麼這個數字整體就越小,所以我從第1位到第9位掃描最小的數字,用n1[0]記錄第一個也就是最高位元字在n[12]中的位置,然後從n1[0]位置開始到第10位尋找第二給我數字,在n[12]中的位置儲存在n1[1]中,以此類推,一直到最後一個數字取完,最後輸出。
源碼:
1 #include<stdio.h>
2 int main()
3 {
4
5 int n[12]={7,8,6,2,4,5,6,1,3,9,8,4};
6 int n1[4]={0,0,0,0};
7 int i=0,j=0,a=3;
8
9 for(i=1;i<=12-a;i++)
10 {
11 if(n[n1[j]]>n[i])
12 {
13 n1[j]=i;
14 }
15 }
16 for(i=1;i<4;i++)
17 n1[i]=n1[i-1]+1;
18
19 for(i=1;i<4;i++)
20 {
21 for(j=n1[i];j<12-a;j++)
22 {
23 if(n[n1[i]]>n[j+1])
24 {
25 n1[i]=j+1;
26 }
27 }
28 --a;
29 }
30
31 i=0;
32 for(j=0;j<12;j++)
33 {
34 if(n1[i]!=j)
35 printf("%d",n[j]);
36 else
37 {++i; continue;}
38 }
39 printf(",");
40 for(i=0;i<4;i++)
41 printf("%d",n[n1[i]]);
42 getchar();
43 return 0;
44 }
Ps:著實收發和代碼規範不是很好,有最佳化建議提一下 嘿嘿。第三題是道附加題,比較偏數學知識,共有三小題:1.給定三個座標點,求這三點組成的三角形是屬於什麼類型三角形(銳角,直角,鈍角)2.就求第一問中這個三角形的外接圓的面積3.給定5個座標點,求經過這5個點的最小圓的面積第一問很簡單,設個二維數組,然後利用座標求各邊的值,最後利用相應的公式 判斷a2+b2和c2的關係 得出相應的結果第二問和第三問,沒有做,因為之前的數學知識沒有複習到圓部分,所以放棄了,但是大牛說可以利用高精度演算法實現,正在研究中......