(字串)2491 移掉K位數字

2021-09-17 00:26:01 字數 1559 閱讀 3416

2 秒262,144 kb

20 分

3 級題

小b有個正整數num(長度為n),她希望移掉num的k位數字,使得得到的數值最小。

收起

第一行輸入乙個正整數n,表示num的位數;

第二行輸入乙個長度為n的字串(字元為0-9),表示該n位非負整數num(原num中沒有前導0);

第三行輸入乙個正整數k;

其中0<k≤n<10002

輸出乙個字串,表示去掉k位後最小的數
7

1432219

3

1219
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps (1e-8)

#define max 0x3f3f3f3f

#define u_max 1844674407370955161

#define l_max 9223372036854775807

#define i_max 2147483647

#define re register

#define pushup() tree[rt]=tree[rt<<1]+tree[rt<<1|1]

#define nth(k,n) nth_element(a,a+k,a+n); // 將 第k大的放在k位

#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 約瑟夫

#define ok() v.erase(unique(v.begin(),v.end()),v.end()) // 排序,離散化

#define catalan c(2n,n)-c(2n,n-1) (1,2,5,14,42,132,429...) // 卡特蘭數

using namespace std;

inline int read()

while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}typedef long long ll;

const double pi = atan(1.)*4.;

const int inf = 0x3f3f3f3f;

const ll inf = 0x3f3f3f3f3f3f3f3fll;

const int m=63;

const int n=1e4+5;

string str;

int main()

while(k--)

}if(!leap)

str.erase(n-1,1);

n--;

}//printf("n == %d\n",n);

int h=n-1;

for(int i=0;i}

for(int i=h;iprintf("%c",str[i]);

return 0;

}

移掉K位數字

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。輸入 num 10200 k 1 輸出 200 解釋 移掉首位的 1 剩下的數字為 20...

移掉K位數字

移掉k位數字 給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例 2 輸入 num 10200 k 1 輸出 200 ...

移掉k位數字

給定乙個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。注意 num 的長度小於 10002 且 k。num 不會包含任何前導零。示例 1 輸入 num 1432219 k 3 輸出 1219 解釋 移除掉三個數字 4,3,和 2 形成乙個新的最小的數字 1219。示例...