題目連線: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...