麥森數
題目描述
求2^p-1的位數和後五百位數
思路求位數的話可以直接推斷
12345的位數為5
1000010位數為7
多寫幾組就可以知道位數是lg(n)+1;對於2^p-1的位數直接代入即可。計算時因為只有100,1000,10000減一與本身位數差一,而2的冪次不會出現這樣的值,所以直接求2的p次方的冪次即可。
求後五百位數值
對於我來說是個難題,尤其還是高精度問題,直接求肯定會超時
求2的p次方可以想到快速冪,用快速冪解決了時間複雜度,但高精度還是個問題
解決高精度,可以用陣列模擬大數的方法,用陣列儲存數
for(int i=0;i<500;i++)
for(int j=0;j<500-i;j++)
c[i+j]+=x[i]*y[j];
for(int i=0;i<500;i++)
**
#includeusing namespace std;
int a[510],b[510];//陣列a儲存後五百位數,陣列b儲存2的冪次
int p;
//陣列模擬大數乘法
void mul(int x,int y)
for(int i=0;i<500;i++)
x[i]=c[i];
}void solve()
a[0]--;//2^p-1
}int main()
else
cout<}
//cout
}
C 模擬大數乘法 以及 大數階乘
大數階乘 最最最重要的總結部分 寫在開頭 大數的運算一直以來都是乙個具有研究性的問題,自己動手模擬了一下筆算乘法,以及由乘法拓展出來的階乘,和大家分享一下思路及 比如50的階乘結果是65位,而 int 的範圍是 10 9,long long 的範圍是 10 18 模擬筆算乘法,如圖 由於我們對筆算乘...
PAT乙級1017 A處以B(模擬大數除法)
本題要求計算 a b,其中 a 是不超過 1000 位的正整數,b 是 1 位正整數。你需要輸出商數 q 和餘數 r,使得 a b q r 成立。輸入在一行中依次給出 a 和 b,中間以 1 空格分隔。在一行中依次輸出 q 和 r,中間以 1 空格分隔。123456789050987654321 7...
九度OJ 1398 移動次數 (陣列,模擬)
題目1398 移動次數 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 1375 解決 369 題目描述 眾所周知jobdu旗下的jobbala公司是一家以個性 親民著稱的it公司。在jobbala公司成立50周年的日子裡,公司ceo組織全體員工登山旅遊。按照往常的習慣,導遊通常要求遊客...