이름
시간 제한 : 1000 MS 메모리 제한 : 65,536킬로바이트의
제출 : 11506 수에 의하여 : 3852
설명 [TITLE]
새로운 S 자리 양의 정수에 대한 후 나머지 디지털 원래 순서를 제거 고정밀 양의 정수 n을 입력. 최소 새 번호의 숫자를 나머지 있도록 주어진 N과 S의 프로그래밍하는 솔루션을 찾을 수 있습니다.
새로운 출력 양의 정수. (N은 240보다 더하지이다)
입력 데이터는 잘못된 판결하지 않고 있습니다.
[Enter]를
엔
에스
[출력]
마지막 남은 최소 번호.
[샘플 입력]
175,438
4
[샘플 출력]
(13)
분석
말을 많이하지, 그것은 감소하는 시퀀스의 첫 번째 요소를 삭제하는 것입니다
테스트 케이스는 상대적으로 물이 여기에 주로 몇 가지 특별한 문장에 대해 이야기입니다 :
1. 선도 제로
같은 2. 샘플 :
1444 3 삭제
서면 두 가지 방법이 있습니다, 그리고 마침내 1444 삭제 아무런 관련이없는, 또는, 루프 길이 정수를 축소하지 않을 경우이 엄격하게 순서를 감소되지 않는다
암호
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define F(i,a,b) for(int i=a;i<=b;i++)
#define UF(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
typedef long long ll;
int n, a[300], s;
string p;
int main()
{
int flag = 0;
cin >> p;
n = p.length();
F(i,0,n-1){
a[i + 1] = p[i] - '0';
}
int i = 1;
while(i <= n){
if(a[i] == 0){
a[i] = -1;
i++;
}
else break;
}
cin >> s;
int s0 = s;
while(s0--){
int i = 1;
while(i <= n){
if(a[i] == -1){
i++;
continue;
}
int j = i + 1;
while(a[j] == -1) j++;
if(a[i] <= a[j])//是否取等问题,
//55567 删3; 1444删3
i++;
else
break;
}
a[i] = -1;
}
int shan = 0;
F(i,1,n){
if(a[i] == -1) shan++;
}
if(shan < s){//要手动判断一下
int end = n;
for(end;end >= 1; end--){
if(a[end] != -1){
a[end] = -1;
shan ++;
}
if(shan == s)
break;
}
}
i = 1;
while(i <= n){//删后的前导零和前导-1
if(a[i] != -1 && a[i] != 0) break;
else i++;
}
while(i <= n){
if(a[i] != -1){
flag = 1;
cout << a[i];
}
i++;
}
if(!flag) cout << 0;
cout << endl;
return 0;
}
또는
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int s;
int n[100000];
string in;
bool flag;
int strlen(string ff){
// cout << "func" << endl;
int tot = 0;
while(ff[tot++] != '\0');
tot--;
return tot;
}
int t;
int main(){
flag = 0;
cin >> in;
cin >> s;
for(int i = 0;i < strlen(in); i++){
n[i] = in[i] - '0';
}
int len = strlen(in);
for(int i = 1;i <= s; i++){
for(int j = 0;j < len - 1; j++)
if(n[j] > n[j+1]){
for(int k = j;k < len-1;k++){
n[k] = n[k+1];
}
break;
}
len--;//如果找不到递减序列,就直接删最后一个元素
}
for(int i = 0;i < len; i++){
if(n[i] != 0) flag = 1;
if(flag) cout << n[i];
}
if(flag) cout << endl;
if(!flag) cout << 0 << endl;
return 0;
}
거의 같은 문제 ybt입니다 1231 새로운 작은 정수,