時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:2 描述
請在整數 n 中刪除m個數字, 使得餘下的數字按原次序組成的新數最大,
比如當n=92081346718538,m=10時,則新的最大數是9888
輸入
第一行輸入乙個正整數t,表示有t組測試資料
每組測試資料佔一行,每行有兩個數n,m(n可能是乙個很大的整數,但其位數不超過100位,並且保證資料首位非0,m小於整數n的位數)
輸出每組測試資料的輸出佔一行,輸出剩餘的數字按原次序組成的最大新數
樣例輸入
292081346718538 10
1008908 5
樣例輸出
988898
**第六屆itat複賽b卷2題改編
上傳者
acm_趙銘浩
這應該是一道思維題目吧,但是自己想的太簡單了,這些問題還是應該從出發點考慮,不能投機取巧
那麼如何求在原次序下的最大值!!!
首先說的應該是找乙個最大值,,前提是這個最大值,應該位數大於等於要留的位數才可以,其實後面的就是根據這一原理遞迴來說吧(或者是迴圈)
自己原本想著,將資料排序,正序刪除前邊的資料就可以了,後來發現不是很合適,因為如何這個值在後面沒有多大價值,就像
9387902,如何按著自己的方法刪除0,並不是正確結果!!!
所以應該找前邊 的相對較大的
#include #include #include #include #include #include using namespace std;
int main()
}ans[k++]=str[temp];
mark=temp+1;
max='0';
}while(--m);
ans[k]='\0';
printf("%s\n",ans);
} return 0;
}
尋找最大數
描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n,m n可能是乙個很大的整數,但其位數不超過100位,並且保證資料...
尋找最大數
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 請在整數 n 中刪除m個數字,使得餘下的數字按原次序組成的新數最大,比如當n 92081346718538,m 10時,則新的最大數是9888 輸入 第一行輸入乙個正整數t,表示有t組測試資料 每組測試資料佔一行,每行有兩個數n...
尋找最大數
尋找最大數 三 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述給出乙個整數n,每次可以移動2個相鄰數字上的數字,最多移動k次,得到乙個新的整數。求這個新的整數的最大值是多少。輸入多組測試資料。每組測試資料佔一行,每行有兩個數n和k 1 n 10 18 0 k 100 輸出每組...