C語言中整型運算取Ceiling問題補充

2022-09-23 16:00:10 字數 557 閱讀 4295

假設變數 x 和 n 是兩個正整數,我們知道 x/n 這個表示式的結果要取 floor,例如 x 是 17,n 是 4,則結果是 4。如果希望結果取ceiling 應該怎麼寫表示式呢?例如 x 是 17,n 是 4,則結果是 5;x是16,n 是 4,則結果是 4。

設 x=kn+b,b∈[0, n) 且 b∈z

(1)b=0

(x+z)/n=k,即 (kn+z)/n=k。即 z∈[0,n-1]

(2)b=(0,n)

(x+z)/n=k+1,即 (kn+b+z)/n=k+1,即 (b+z)/n=1,即 (b+z)∈[n,2n-1]

希望找到這樣乙個 z, b 取遍整個取值區間的值,(b+z)∈[n,2n-1] 仍然成立。只要 b 取最小值和最大值的時候,(b+z)∈[n,2n-1]都成立就可以了。所以,z=n or n-1.

合併一二兩種情況,得到 z=n or n-1

分而治之,x 是 17,n 是 4,則結果是 5;x是16,n 是 4,則結果是 4。把題目要求分解為 b=0 和 b=(0,n) 兩種情況,然後求交集

過程種使用的除法是餘數和商形式的除法

C語言中整型運算取Ceiling問題

此題來自 linux c程式設計一站式學習 假設變數x和n是兩個正整數,我們知道x n這個表示式的結果要取floor,例如x是17,n是4,則結果是4。如果希望結果取ceiling應該怎麼寫表示式呢?例如x是17,n是4,則結果是5 x是16,n是4,則結果是4。網上對這道題只有答案和證明,我們雖然...

C語言中整型運算取Ceiling問題

此題來自 linux c程式設計一站式學習 假設變數x和n是兩個正整數,我們知道x n這個表示式的結果要取floor,例如x是17,n是4,則結果是4。如果希望結果取ceiling應該怎麼寫表示式呢?例如x是17,n是4,則結果是5 x是16,n是4,則結果是4。網上對這道題只有答案和證明,我們雖然...

C語言中基本整型資料型別

c語言中的基本整型資料型別 整型家族包括字元 短整型 整型 長整型,它們都分為有符號和無符號兩種版本 整型值相互之間的大小的規則 長整型至少應該和整型一樣長,而整型至少應該和短整型一樣長 一般情況下各種型別在32 64位機上的大小 long,unsigned long pointer為機器全字長,其...