01 删除字符
题目描述
给定一个单词,请问在单词中删除t个字母后,能得到的字典序最小的单词是什么?
输入描述
输入的第一行包含一个单词,由大写英文字母组成。
第二行包含一个正整数t。
其中,单词长度不超过100,t小于单词长度。
输出描述
输出一个单词,表示答案。
输入输出样例
示例1
输入
LANQIAO
3
输出
AIAO
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str1[105];
int n;
scanf("%s",str1);
scanf("%d",&n);
int len = strlen(str1);
int top = -1;
char str2[105] = {0};
for (int i = 0; i < len; i++) {
while (top >= 0 && str2[top] > str1[i] && n) {
top --;
n --;
}
str2[++top] = str1[i];
}
top -= n;
printf("%s",str2);
return 0;
}
02 最大降雨量
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的49张法术符,上面分别写着1至49这49个数字。
法术一共持续7周,每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周7张法术符上数字的中位数。
法术施展完7周后,求雨将获得成功,降雨量为7周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多
少?
#include<stdio.h>
int main()
{
//分析,我们先理解题意,我们如果假设每周的中位数是a,b,c,x,e,f,g,这七个数是这七张
//法术符数字上的中位数(即为能量)。降雨量为这七个数的中位数,我们要的是x最大,假设这此时x最大,我们可以看看需要满足什么条件。
//七个数从小到大排列 第四周x后三天要比x大,第五周第六周第七周的后四天都要比x大,所以共要有15个数比x大。
//所以x最大为34;
printf("34");
return 0;
}
03 分数
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,y;
x=pow(2,20)-1;
y=pow(2,19);
printf("%d/%d",x,y);
return 0;
}
04 鲁卡斯队列
#include <iostream>
using namespace std;
int main()
{
float a = 1,b = 3,c = 0;
float n = 0;
while(1){
n = a/b;
if((n>=0.6180335)&&(n<=0.6180344))
break;
c = a + b;
a = b;
b = c;
}
cout<<a<<'/'<<b;;
return 0;
}
05 公约数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果整数a是整数b的整数倍,则称b是a的约数。请问,有多少个正整数既是2020的约数,又是3030的约数。
#include <iostream>
using namespace std;
int main()
{
int count=0;
for(int i=1;i<=1010;i++){
if(2020%i==0&&3030%i==0) count++;
}
printf("%d",count);
// 请在此输入您的代码
return 0;
}
06 求和
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明对数位中含有2、0、1、9的数字很感兴趣,
在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。
请问,在1到2019中,所有这样的数的和是多少?
#include <iostream>
using namespace std;
bool yes(int num){
while(num > 0){
if(num % 10 == 2 || num % 10 == 0 || num % 10 == 1 || num % 10 == 9) return true;
num /= 10;
}
return false;
}
int main()
{
// 请在此输入您的代码
int sum = 0;
for(int i = 1; i <= 2019; ++i){
if(yes(i)) sum += i;
}
cout << sum;
return 0;
}
07 字母数
问题描述
请找到一个大于2022的最小数,这个数转换成十六进制之后,所有的数位(不含前导0)都为字母(A到F)。请将这个数的十进制形式作为答案提交。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为
一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
#include<bits/stdc++.h>
using namespace std;
int i=2023;
bool haileo(int x)
{
while(x!=0)
{
if(x%16<10)
return 0;
x/=16;
}
return 1;
}
int main()
{
while(1)
{
if(haileo(i))
break;
i++;
}
printf("%d",i);
return 0;
}
08 星期计算
#include <iostream>
using namespace std;
int main()
{
int n=6,s=1;
for(int i=1;i<=22;i++)
{
s*=20;
}
if(s%7+n-7>0)
cout<<(s%7+n)%7;
else cout<<7;
}
09 清理水域
问题描述
小蓝有一个n×m大小的矩形水域,小蓝将这个水域划分为n行m列,行数从1到n标号,
列数从1到m标号。每行和每列的宽度都是单位1。
现在,这个水域长满了水草,小蓝要清理水草。每次,小蓝可以清理一块矩形的区域,从第r1行(含)到第r2行(含)的第c1列(含)到c2列(含)。
经过一段时间清理后,请问还有多少地方没有被清理过。
输入格式
输入第一行包含两个整数n,m,用一个空格分隔 第二行包含一个整数t,表示清理的次数。
接下来t行,每行四个整数r1,c1,r2,c2,相邻整数之间用一个空格
分隔,表示一次清理。请注意输入的顺序。
输出格式
输出一行包含一个整数,表示没有被清理过的面积。
样例输入
2 3
2
1 1 1 3
1 2 2 2
样例输出
2
样例输入
30 20
2
5 5 10 15
6 7 15 9
样例输出
519
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int n,m,t,a[105][105] = {0},r1,r2,c1,c2,sum = 0;
cin >> n>>m >> t;
for(int i =0;i < t;i++){
cin >> r1 >> c1>> r2 >> c2;
for(int j = r1;j <= r2;j ++){
for(int k = c1;k <= c2;k++){
if(a[j][k]==0){
a[j][k] = 1;//标记被清理的水域
sum ++;//记录被清理的水域 有多少个
}
}
}
}
int ans = n * m - sum;//(n*m)为水域总数,减去被记录清理水域的个数sum 得出答案
cout << ans ;
return 0;
}
10 二进制表示
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小明要用二进制来表示1到10000的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示1到10000的所有整数,至少需要多少个二进制位?
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n = 1;
while (1)
{
if (pow(2, n) >= 10000)
break;
n++;
}
cout << n << endl;
}