hdu 5718 Oracle 大數模擬

2021-07-15 03:11:34 字數 907 閱讀 8229

題目連線:hdu_5718_oracle

題意:給你一串數,讓你分出兩個正整數,使其和最大,若不能分出來就輸出"uncertain"

題解:當時比賽的時候還天真的去搞大數模版,被sb模版坑了100+分鐘,以為8點45結束,然後最後都準備棄療了,然後發現還有15分鐘結束,然後下定決心自己寫個模擬,10分鐘寫完就ac了,臥槽,我tm當時為什麼要去搞100+min的大數模版,sb大數模版搞的我bc又扣分了。艹!

最開始用的sort來貪心,然後題解說本來是想卡sort的,然後下來改了一下**,用桶排,跑了這題的第一名

#include#include#define f(i,a,b) for(int i=a;i<=b;++i)

char a[10000010],b[10000010];int num[10];

int main()

len--;memset(num,0,sizeof(num));

f(i,0,len)num[a[i]-'0']++;

int cnt=0,a,ed=0;

f(i,1,9)cnt+=num[i];

if(cnt<=1)

f(i,1,len)if(num[i])

b[0]='0';

for(int i=9;i>=0;i--)while(num[i])b[++ed]=i+'0',num[i]--;

b[ed]+=a;

for(int i=ed;i>0;i--)

if(b[i]>'9')b[i]-=10,b[i-1]++;else break;

b[ed+1]='\0';

if(b[0]!='0')printf("%s\n",b);

else printf("%s\n",b+1);

}return 0;

}

大數 大數相加(hdu1002)

題目描述 acm入門的第一題,兩個超出整型變數範圍的整數進行相加運算。一 因為整型裝不下,所以需要通過字串來存放。二 加法運算是從個位 末端 開始,並且涉及到進製。include includechar a 1000 b 1000 int main d 1000 為了更好的檢視,我們重新申請兩個陣列...

大數加法 HDU 1002

一般的加法只要int型別的兩數直接相加即可,大一點的數可以設為long long型別,而超過長整型的數則屬於大數問題了,大數加法其實也比較簡單,利用陣列實現就可以啦 主要思想如下 1 將大數以字串形式輸入,並轉化為陣列形式倒序儲存 2 將兩陣列對應位相加,位數滿10進1 3 判斷最高位是否為0,輸出...

oracle大資料優化

1.選擇主鍵的方式 oracle主鍵有兩種,guid與自動增長 1.guid,長度為32,中間隨便四條槓,保證主鍵不相同,呼叫guid方法就行 2.自動增長,oracle沒有mysql那樣,有identity自動增長語句,設定主鍵自動增長分為兩步 系統許可權 系統許可權只能由dba使用者 命令 re...