當前位置:ag真人国际官网-ag旗舰厅官方网站 » 操作系統 » 整數演算法

整數演算法-ag真人国际官网

發布時間: 2022-01-08 01:19:22

a. 硬碟分區的整數演算法

這是網上流傳的「硬碟分區整數最精確演算法」二種說法:

【第一種】硬碟整數分區計算方法我們一般是這樣算的:分區大小=(分區大小-1)×4+1024×分區大小。
比如: 40gb=(40-1)×4+1024×40=41116mb

按照這樣的計算方法:
5g=5136mb
10g=10276mb
15g=15416mb
20g=20556mb
30g=30836mb
40g=41116mb

【第二種】
30g以內,輸入上面的數據,如10g你輸入10276,在windows資源管理器裡面顯示的剛好10.00gb,而在管理工具-磁碟管理界面顯示就是10.04gb,如果是40g你輸入41116,那麼在windows資源管理器裡面顯示的剛好40.01gb。
因此上面的計算公式還不是很准確。 最精確硬碟分區的演算法我認為應該是這樣的:

硬碟一般有255磁頭,63扇區,故每柱面大小為:
512byte x 255 x 63=8225280bytes =7.84423828125 mb
如果要分40gb,那麼要40x1024mb=40960mb
需要柱面數為40960÷7.84423828125=5221.66
取整數既為5222個柱面
應分m數為5222x7.84423828125=40962.6123046875mb
不管小數點後面幾位都進1,也就是40963mb,windows就認為是40gb了。
這個方法ntfs和fat32通用。

下面附1gb到200gb精確計算結果:
1g : 1028m
2g : 2056m
3g : 3075m
4g : 4103m
5g : 5123m
6g : 6150m
7g : 7170m
8g : 8198m
9g : 9217m
10g : 10245m
15g : 15367m
20g : 20482m
25g : 25604m
30g : 30726m
35g : 35841m
40g : 40963m
45g : 46085m
50g : 51208m
55g : 56322m
60g : 61444m
65g : 66567m
70g : 71681m
75g : 76803m
80g : 81926m
85g : 87048m
90g : 92162m
95g : 97285m
100g : 102407m
110g : 112644m
120g : 122888m
130g : 133125m
140g : 143362m
150g : 153606m
160g : 163843m
170g : 174088m
180g : 184324m
190g : 194561m
200g : 204806m

此精確分區結果,在管理工具-磁碟管理界面,和windows資源管理器裡面顯示的是整數,10g就是10.00gb,20g就是20.00gb,40g就是40.00gb

b. 整數的計算方法是什麼

四則運算 計演算法則
整數加、減 把數位對齊,從低位加起。
小數加、減 把小數點對齊,再按照整數加、減法的法則進行運算。
分數加、減 當分母相同時,把分子直接相加減;分母不同時,要先通分,在相加減。
整數乘法 相同數位對齊,從乘法的末位算起,用乘法的每一位去乘被乘數,得數的末位和
乘數對齊。
整數除法 從被除數的最高位除起,除到被除數的哪一位,商就寫在那一位上面,每次除後余
下的數必須比余數小。
分數乘法 用分子相乘的積做分子,用分母相乘的積做分母。
分數除法 甲數除以乙數(0除外),等於甲數乘乙數的倒數。
小數乘法 小數乘整數,先按整數乘法法則算出積,再看被乘數有幾位小數,就從積的右邊起
數出幾位,點上小數點。
小數除法 除數是整數時,按照整數除法的法則計算,商的小數點要和被除數的小數點對齊;
除數是小數時,先移動除數的小數點,使它變成整數,除數的小數點向右移動幾
位,被除數的小數點也向右移動幾位(數位不夠的用「0」補足)然後按照除數是整數
的小數除法法則進行計算。

c. 有誰會整數劃分演算法的啊 給我具體講講吧 謝謝

整數劃分問題是將一個正整數n拆成一組數連加並等於n的形式,且這組數中的最大加數不大於n。
如6的整數劃分為

6
5 1
4 2, 4 1 1
3 3, 3 2 1, 3 1 1 1
2 2 2, 2 2 1 1, 2 1 1 1 1
1 1 1 1 1 1

共11種。下面介紹一種通過遞歸方法得到一個正整數的劃分數。

遞歸函數的聲明為 int split(int n, int m);其中n為要劃分的正整數,m是劃分中的最大加數(當m > n時,最大加數為n),
1 當n = 1或m = 1時,split的值為1,可根據上例看出,只有一個劃分1 或 1 1 1 1 1 1
可用程序表示為if(n == 1 || m == 1) return 1;

2 下面看一看m 和 n的關系。它們有三種關系
(1) m > n
在整數劃分中實際上最大加數不能大於n,因此在這種情況可以等價為split(n, n);
可用程序表示為if(m > n) return split(n, n);
(2) m = n
這種情況可用遞歸表示為split(n, m - 1) 1,從以上例子中可以看出,就是最大加
數為6和小於6的劃分之和
用程序表示為if(m == n) return (split(n, m - 1) 1);
(3) m < n
這是最一般的情況,在劃分的大多數時都是這種情況。
從上例可以看出,設m = 4,那split(6, 4)的值是最大加數小於4劃分數和整數2的劃分數的和。
因此,split(n, m)可表示為split(n, m - 1) split(n - m, m)

根據以上描述,可得源程序如下:

#include

int split(int n, int m)
{
if(n < 1 || m < 1) return 0;
if(n == 1 || m == 1) return 1;
if(n < m) return split(n, n);
if(n == m) return (split(n, m - 1) 1);
if(n > m) return (split(n, m - 1) split((n - m), m));
}

int main()
{
printf("12的劃分數: %d", split(12, 12));
return 0;
}
將正整數劃分成連續的正整數之和
如15可以劃分成4種連續整數相加的形式:
15
7 8
4 5 6
1 2 3 4 5

首先考慮一般的形式,設n為被劃分的正整數,x為劃分後最小的整數,如果n有一種劃分,那麼
結果就是x,如果有兩種劃分,就是x和x x 1, 如果有m種劃分,就是 x 、x x 1 、 x x 1 x 2 、... 、x x 1 x 2 ... x m - 1
將每一個結果相加得到一個公式(i * x i * (i - 1) / 2) = n,i為當前劃分後相加的正整數個數。
滿足條件的劃分就是使x為正整數的所有情況。
如上例,當i = 1時,即劃分成一個正整數時,x = 15, 當i = 2時, x = 7。
當x = 3時,x = 4, 當x = 4時,4/9,不是正整數,因此,15不可能劃分成4個正整數相加。
當x = 5時,x = 1。

這里還有一個問題,這個i的最大值是多少?不過有一點可以肯定,它一定比n小。我們可以做一個假設,
假設n可以拆成最小值為1的劃分,如上例中的1 2 3 4 5。這是n的最大數目的劃分。如果不滿足這個假設,
那麼 i 一定比這個劃分中的正整數個數小。因此可以得到這樣一個公式i * (i 1) / 2 <= n,即當i滿足
這個公式時n才可能被劃分。

綜合上述,源程序如下
int split1(int n)
{
int i, j, m = 0, x, t1, t2;
// 在這里i 1之所以變為i - 1,是因為i * (i - 1) / 2這個式子在下面多次用到,
// 為了避免重復計算,因此將這個值計算完後保存在t1中。並且將<= 號變為了<號。
for(i = 1; (t1 = i * (i - 1) / 2) < n; i )
{
t2 = (n - t1);
x = t2 / i;
if(x <= 0) break;
if((n - t1) % i == 0)
{
printf("%d ", x);
for(j = 1; j < i; j )
printf("%d ", x j);
printf("\n");
m ;
}
}
return m;
}

d. 小數除整數的演算法

小數除整數豎式計算分析58÷1.2
解題思路:將被除數從高位起的每一位數進行除數運算,每次計算得到的商保留,余數加下一位數進行運算,依此順序將被除數所以位數運算完畢,得到的商按順序組合,余數為最後一次運算結果

解題過程:
步驟一:因為除數不為整數,首先將除數化為整數為12,被除數同時擴大同樣的倍數為:580

步驟二:58÷12=4 余數為:10

步驟三:100÷12=8 余數為:4

根據以上計算計算步驟組合結果商為48、余數為0.4

驗算:48×1.2 0.4=58

(4)整數演算法擴展閱讀&驗算結果:四則運算規則(按順序計算,先算乘除後算加減,有括弧先算括弧,有乘方先算乘方)即脫式運算(遞等式計算)需在該原則前提下進行

解題過程:
48×1.2 0.4

=57.6 0.4

=58

存疑請追問,滿意請採納

e. 整數的劃分遞歸演算法

整數的劃分遞歸演算法:0既不是正整數也不是負整數。1是一個正整數,比一個正整數大1的整數是一個正整數。-1是一個負整數,比一個負整數小1的整數是一個負整數。

f. 用演算法怎麼判斷一個數是整數

1.cin>>b 是一個標准輸入,意思是從屏幕輸入一個數賦值給b,b是實型,a是整型,
2.a=b 這里涉及一個默認轉換問題,實型賦值給整型會把小說部分丟掉!
3. b-a ,如果b是實型帶小數,那麼b就a多了小數部分,(b-a)!=0 為true了,如果b是整數,(b-a)就是0 了
,(b-a)!=0 為 false了

g. 判斷一個數是否為整數,演算法用c 來怎麼寫

double x;
scanf("%f",&x);
if((int)x==x)
printf("%f是整數",x);
把所輸入的數強制轉換為整數,然後判斷是否跟原來相等。

h. 求演算法思路:倒置整數的演算法,

#include "stdafx.h"
#include
#include
using namespace std;
void reverse(int &m)//m為4位整數
{
m=1000*(m) 100*(m0/10) 10*(m00/100) m/1000;
}

int main()
{
int m;
cout<<"請輸入一個4位整數:"; //m為4位整數
cin>>m;
reverse(m);
cout<<"倒置後為:"< system("pause");
return 0;
}
其他位數的整數以此類推

i. 大整數演算法是什麼

應該屬於「數據結構」吧,至少我在數據結構書上看到的。

通常把數字分段處理,然後重載運算符

舉個例子:

比如

假如我們認為一個int型可以從-32768~ 32767

那麼我們就把數字分成
1234 5678 9012 3456 7890 1234 5678 9012 3456 7890
1234 5678 9012 3456 7890 1234 5678 9012 3456 7890
這樣四位數做加法運算就不會出現溢出了

j. 求大數對整數取余演算法的原理

所謂求余不就是除法得到余數的過程,這個程序的演算法其實跟我們手動除法的過程是一樣的,想想我們怎麼筆算的?

舉個例子來說,4147 /3

最高位開始,4/3=1,還餘1,然後借位給低位,下一位是1,加上高一位的借位就是1×10 1=11,
11/3=3,還餘2,繼續借位給下一位=4 2×10=24,24/3=8,恰好除斷,最後一位就沒有借位了,就是7/3=2,還餘1,最後得到的余數就是4147 /3的余數

你程序中對大數求余的過程,不就是模擬我們筆算除法的過程嘛!

熱點內容
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:97
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:827
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:309
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:939
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:821
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:89
安卓怎麼關簡訊重復提醒 發布:2024-11-19 09:02:00 瀏覽:635
html與php的區別 發布:2024-11-19 09:00:53 瀏覽:194
晚安密碼多少 發布:2024-11-19 09:00:51 瀏覽:945
易語言腳本模塊 發布:2024-11-19 09:00:44 瀏覽:484
网站地图