输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后,剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
标签:names printf 最小数 sample 处理 方案 cout print 描述
输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后,剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
第1行:一个正整数n;
第2行:s(s<n的位数).
最后剩下的最小数。
175438
4
13
#include <bits/stdc++.h> using namespace std; int main() { char str[245]; scanf("%s",str); int len = strlen(str); int k; cin>>k; str[len] = ‘0‘-1; while(k--) { for(int i=0;i<len;i++) { if(str[i]>str[i+1]) { for(int j=i;j<len;j++) { str[j] = str[j+1]; } len--; break; } } } str[len] = ‘\0‘; int flag = 0; for(int i=0;i<len;i++) { if(str[i]!=‘0‘) flag = 1; } if(flag) { int i; for(i=0;i<len;i++) { if(str[i]!=‘0‘) break; } for(int j= i;j<len;j++) { printf("%c",str[j]); } } else cout<<‘0‘; return 0; }
注意:特殊情况需要处理前导零,例如:
str[] = “1054” k = 2 ans = 4 (我用这个例子滴出了bug)
要去除前导0
标签:names printf 最小数 sample 处理 方案 cout print 描述
原文地址:https://www.cnblogs.com/hao-tian/p/9415765.html