您现在的位置是:主页 > news > 江西建设部网站/热点新闻事件今日最新
江西建设部网站/热点新闻事件今日最新
admin2025/4/28 21:07:56【news】
简介江西建设部网站,热点新闻事件今日最新,石家庄网站建设推广公司,山东网站对于本科生开放日的机试而言,这道题目总体而言还是比较简单的。题目里面给出来的十进制整数具体的范围我已经忘记了,是从同行大佬里拿过来的,但是这个数值的大小对于通过字符串的处理方式而言,已经是没有任何的影响了。因为我们处…
对于本科生开放日的机试而言,这道题目总体而言还是比较简单的。题目里面给出来的十进制整数具体的范围我已经忘记了,是从同行大佬里拿过来的,但是这个数值的大小对于通过字符串的处理方式而言,已经是没有任何的影响了。
因为我们处理的数值可能会比较大,所以一般解决大数的过程中,我们所使用的方法可以是字符串处理(例如大数库miracl库),或者是通过数组进行处理。我使用的语言是C语言。
题目描述:
给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
现在从m位中删除k位(0例如: n = 9128456, k = 2, 则生成的新整数最小为12456
输入样例与输出样例:
输入样例1:
12
2
输出样例1:
0
输入样例2:
96315
3
输出样例2:
13
我的思路是这样的:首先建立一个char类型的数组,用来接纳初始数据(也就是输入数字的每一位,此时是作为一个char而进行存储的):
char s[100];
int n;
scanf("%s", s);
scanf("%d", &n);
然后就可以对这个数字中包含的每一个数字,按照从小到大的顺序进行排序(虽然每一位的数字此时是作为char类型的数据而存在的,但是它们的ASCII码也是按照同样地顺序从小到大进行排列),排序算法就看自己熟悉哪个就可以选择哪个,我选择的是冒泡排序。
最后排完序后,我们从排完序后的数组中选择想要的位数进行输出,即可得到结果。下面是完整的源代码:
#include #include void sort(char s[], int len){
char tmp;
int i=0;
int j= 1;
for (i=0; is[j+1]){
tmp = s[j];
s[j] = s[j+1];
s[j+1] = tmp;
}
}
}
}
int main(){
char s[100];
int n;
scanf("%s", s);
scanf("%d", &n);
int len = strlen(s);
sort(s, len);
int i=0;
for (i=0; i