簡單計算題和數制轉換
通過程式問題來理解:
裝箱問題:
已知有6x6的大箱子和1x1,2x2,3x3,4x4,5x5,6x6的木塊,箱子高度和木塊一樣。問:給定各種木塊的數目,求最少需要多少個大箱子來裝
輸入要求:
每行代表乙個訂單,每個訂單有6個用空格分開的資料,分別表示1x1到6x6的產品數量,6個0表示1行為輸入結束
輸出要求:
除輸入的最後一行外,輸入的其他每一行對應著輸出的一行,代表訂單所需的最小包裹數
輸入樣例:
0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0
輸出樣例:
2
1
解題思想: 先放大的,再放小的
·6x6的木塊每個占用乙個小箱子 個數為b6
·5x5的木塊每個占用乙個小箱子餘下11個1x1的空格 個數為b5
·4x4的木塊每個占用乙個小箱子,餘下5個2x2的空格 個數為b4
·3x3的木塊每4個占用新乙個箱子,不足四個也占用乙個箱子,分情況餘下不同數目的空格 個數為b3
·2x2木塊先填空格,空格不足再開新箱子,每9個2x2的木塊佔乙個新箱子 個數為b2
·1x1木塊先填空格,空格不足再開新箱子,每36個佔乙個新箱子 個數為b1
s=箱子數
①:先放好6x6,5x5,4x4,3x3的木塊
s=b6+b5+b4+(b3+3)/4;
②:構造計算 再把2x2是木塊塞入3x3木塊的箱子裡設定,設定乙個陣列
int contain[4]=;
contain[i]表示當3x3木塊的數目除以4的餘數分別是0,1,2,3時,會產生多少個能放2x2木塊的空格。
用陣列記錄比if else更加方便。放完2x2木塊後,再算一下有多少個1x1的空格,如果不能把1x1的木塊都填進去,就需要再加乙個箱子。
#include
intmain()
;while(1
)return0;
}
題目描述:
某校大門外長度為l 的馬路上有一排樹,每兩顆相鄰的樹之間的間隔是1公尺,我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置,數軸上的每個整數點,即0,1,2…l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止點的座標都是整數,區域之間可能有重合的部分。現在要把這些區域中的樹(包括區域端點處的兩棵樹)移走。你的任務是計算將這些樹移走後,馬路上還有多少顆樹。(l<=100000)
輸入要求:a(1
輸入兩個整數l(1<=l<=10000)和m(1<=m<=100),l代表馬路的長度,m代表區域的數目,l和m之間用乙個空格隔開,接下來的m每行包含兩個不同的整數,用乙個空格隔開,代表乙個區域的起始點和終止點的座標。
輸出要求:
500 3
150 300
100 200
470 471
輸出樣例:298
**展示:#include
intmain()
,i,j,l,m,x,y;
while
(scanf
("%d %d"
,&l,
&m!=
eof)
) j=0;
for(i=
0;i(a[i]!=1
) j++
;//代表剩下的樹木
printf
("%d\n"
,j);
}}
·十進位制和二進位制相互轉換
·二進位制和八進位制,十六進製制相互轉換
·任意進製的相互轉換
題目描述:
寫一段程式讀入三個整數p,q,r然後確定乙個進製b,使得p*q=r,如果b有很多選擇輸出最小的那乙個。如果沒有合適的進製,則輸出0;
輸入描述:
輸入有t組測試樣例。t在第一行給出。每一組測試樣例佔一行,包含三個整數p,q,r。p,q,r的所有位都是數字,並且1<=p,q,r<=100,000
輸出描述:
對於每個測試樣例輸出一行。該行包括乙個整數,即使得p*q=r成立的最小的b。如果沒有合適的b,則輸出0
輸入樣例:
3
6 9 42
11 11 121
2 2 2
輸出樣例:13
30
解題思路:
選擇乙個進製b,然後按照該進製把三個數轉化為十進位制,然後判斷等數是否成立
分別用乙個字元型陣列儲存p,q,r個位數字符號。先以字串的方式讀入p,q,r,然後轉換為十進位制。
#include
#include
inttoten
(char
*x,int b)
;//b代表了不同的進製我們通過建構函式來傳入不同的進製,然後轉換成了十進位制
intmain()
}}}int
toten
(char
*x,int b)
return ret;
}
反思:
對於簡單的數值轉換,我們要考慮到它的base ,以及從大到小,或者從小到大,是否覆蓋,是否重疊的設計思路。
數值轉換是我們在解決一系列問題,使用演算法的重中之重。
《程式設計實踐》筆記
名字 變數的作用域越大,它的名字所攜帶的基本資訊就應該越多。全域性變數使用具有說明性的文字,區域性變數用短名字。因為全域性變數可以出現在整個程式任何地方,因此它們的名字應足夠長,具有足夠的說明性,以便讀者能夠記得它們是幹什麼用的。按常規方式使用的區域性變數可以採用極短的名字。例如,i j做迴圈變數,...
python程式設計從入門到實踐 筆記二
1.遍歷迴圈ls for i in ls 原理是先獲取ls中第乙個元素儲存到i中,進行冒號後面的操作 然後再返回,將ls中第二個元素儲存到i中,再進行冒號後面的操作。對資料集進行整體操作。2.換行符 n 插入空行 3.for迴圈後面沒有縮排的 都只執行一次。避免縮排錯誤。忘記縮排 indentati...
極限程式設計系列4 開發實踐 計畫
上次我們講到了關於團隊建設,這次呢,我們來講講 開發實踐,這裡我想從三個方面來闡述,計畫 程式設計和測試 極限程式設計認為計畫是一種有必要的浪費,從浪費的角度來看的話,我們可以認為,浪費有時候是必須的,但是做為乙個中小型的專案 xp主要針對於中小型專案 充分徹底的計畫就顯得不可行了,根據守護者的經驗...