嗯, C語言的動態宣告應該是行不通的.
用string+sstring+map的stl可以跑得出來
不過用了10M的記憶體...
map<int,int> m;
getline(cin,str);
istringstream iss(str);
while(iss >> str)
m[atoi(str.c_str())]++;
map<int,int>::const_iterator it=m.begin();
while(it!=m.end())
...
我來提供一個與個數無關但與編號上限值有關的方法好了
一開始我是用字典樹去解決這題的
不過這個是用hash來處理
這解法適用於只有一組數是與眾不同的情況
我們可以觀察到把這些編號模k之後統計 一定有一個餘數的個數不是三的倍數
而且我們可以確定這個餘數 等於 我們要的數模k的餘數
此外如果把每個數轉換成k進位 對於每個鍵值的分別統計也會有相同的結果
因此我們可以把每個的數的鍵值分別統計起來 找出之中不同的部份 然後 還原
就是我們要的數了
我覺得出題者至少標示一下編號的範圍是 大數 OR long long OR int 嘛...