20160806 2 k進製數 高精遞推

2021-07-16 08:11:01 字數 1312 閱讀 4255

辣雞高精題,特判炒雞多。。。

然而wa的地方不在這,而是operator +裡b.t打成t了。。。過載運算子要小心啊

別的同學寫得很簡潔,看來特判可以簡化。正常做所有整段,最後把不足k位的一段單獨處理一下就好。取模等於零,那就是沒有多出來的一段,直接不用做就好,不要像我這麼麻煩。

只有加法,因此高精類裡乙個儲存單元存⑨位十進位制數。這樣就不用擔心時間複雜度了。

自己的**:

#include

#include

#include

using

namespace

std;

typedef

unsigned

int uint;

int k,w,u,d,e,f,g;

bool now=0;

struct ult

bool

operator=(const uint &x)

ult operator +(const ult &c) const

if(b.a[t+1]) ++b.t;

return b;

}void show()

}ar[2][520],ans;

int main()

u=(1

<1;

for(int i=1;i0][i]=u-i,ans=ans+ar[0][i];

for(int i=3,j=ceil(double(w)/k)-1;i<=j;i++)

now^=1;

ar[now][u-i+1]=1,ans=ans+ar[now][u-i+1];

for(int l=u-i;l>=1;l--)

ar[now][l]=ar[now][l+1]+ar[now^1][l+1],ans=ans+ar[now][l];

}if(k*ureturn

0;} now^=1;

d=ceil(double(w)/k)-1;

e=u-d+1;

f=w%k;if(!f) f=k;

g=(1

<1;

if(e-1

<1)

ar[now][e-1]=1;

for(int i=e-2;i>=1;i--)

ar[now][i]=ar[now][i+1]+ar[now^1][i+1];

if(g>e-1) g=e-1;

for(int i=g;i>=1;i--)

ans=ans+ar[now][i];

ans.show();

return

0;}

高精n進製加法

powered by ab in 局外人 從大佬題解搬了一部分思想過來。其實就是兩步 一.回文判斷。二.轉換為字串,做高精加。1.先將兩個字串轉化為10進製的放在陣列裡。2.兩個陣列進行n進製加法。3.每一位帶入表中求值。c include using namespace std const int...

B進製星球(多進製 高精加)

b 2 b 36 進製計數。編寫實現b進製加法的程式。輸入格式 共3行第1行 乙個十進位制的整數,表示進製b。第2 3行 每行乙個b進製數正整數。數字的每一位屬於,每個數字長度 2000位。輸出格式 乙個b進製數,表示輸入的兩個數的和。思路 輸入的時候把a z換成數字 存,輸出的時候把數字換成 a ...

樹屋階梯(卡特蘭數 高精除低精 高精乘低精)

安徽省選 2012 題目描述 暑假期間,小龍報名了乙個模擬野外生存作戰訓練班來鍛鍊體魄,訓練的第乙個晚上,教官就給他們出了個難題。由於地上露營濕氣重,必須選擇在高處的樹屋露營。小龍分配的樹屋建立在一顆高度為 n 1 尺 n 為正整數 的大樹上,正當他發愁怎麼爬上去的時候,發現旁邊堆滿了一些空心四方鋼...