当前位置: 首页 > news >正文

算法修炼之练气篇——练气六层

博主:命运之光

专栏:算法修炼之练气篇

前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)

目录

题目 1099: 校门外的树

题目描述

输入格式

输出格式

样例输入

样例输出

题目 1094: 字符串的输入输出处理

题目描述

输入格式

输出格式

样例输入

样例输出

题目 1072: 汽水瓶

题目描述

输入格式

输出格式

样例输入

样例输出

题目 1145: C语言训练-自由落体问题

题目描述

输入格式

输出格式

样例输入

样例输出

题目 1143: C语言训练-素数问题

题目描述

输入格式

输出格式

样例输入

样例输出

🍓🍓今日份修炼结束,再接再厉!!!


题目 1099: 校门外的树

题目描述

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入格式

输入的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

输出格式

输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

样例输入

500 3 150 300 100 200 470 471

样例输出

298

我们先分析一下题目

具体我想的思路就是:

定义一个数组让它为马路长度,全部为0,如果里面有地铁就定义为1,用count来累加,最后直接两个一减一输出就行了,下来让我们敲敲看有没有什么什么别的问题。

代码

#include<stdio.h>
int a[10005];//L长度<=10000
int main()
{int count=0;//这个来计算地铁长度int i;//下面要用int L,M;scanf("%d %d",&L,&M);for(i=1;i<=L;i++)//1<=L<=10000题目中马路范围{//我感觉从1开始更好理解就将i从1开始了a[i]=0;//将马路L赋值为0}while(M--)//有多少个区域执行几次{int left,right;//声明区域左值和右值scanf("%d %d",&left,&right);for(i=left;i<=right;i++){//看好了,下来是重点喽,直接解决这个问题if(a[i]==0){a[i]=1;count++;//马路长度递加了哦!很容易吧!}}}printf("%d",L-count);//马路长度-地铁长度=剩下的树的数量return 0;
}

调试结果

正确答案

298

我的答案

297

我想的解决方法很简单,就是直接加1就行

printf("%d",L-count+1);//马路长度-地铁长度=剩下的树的数量

修改后代码

#include<stdio.h>
int a[10005];//L长度<=10000
int main()
{int count=0;//这个来计算地铁长度int i;//下面要用int L,M;scanf("%d %d",&L,&M);for(i=1;i<=L;i++)//1<=L<=10000题目中马路范围{//我感觉从1开始更好理解就将i从1开始了a[i]=0;//将马路L赋值为0}while(M--)//有多少个区域执行几次{int left,right;//声明区域左值和右值scanf("%d %d",&left,&right);for(i=left;i<=right;i++){//看好了,下来是重点喽,直接解决这个问题if(a[i]==0){a[i]=1;count++;//马路长度递加了哦!很容易吧!}}}printf("%d",L-count+1);//马路长度-地铁长度=剩下的树的数量return 0;
}

结果正确

题目 1094: 字符串的输入输出处理

题目描述

字符串的输入输出处理。

输入格式

第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。

输出格式

先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。

样例输入

2 www.dotcpp.com DOTCPP A C M D O T CPP

样例输出

www.dotcpp.com DOTCPP

A C M

D

O

T

CPP

#include<bits/stdc++.h>
using namespace std;
int main()
{char s2[1000];string s1;int n;cin>>n;getchar();//吃一个回车符号,因为下面用了一个gets()因为gets()会把回车符也认为是输入 while(n--){gets(s2);cout<<s2<<endl;cout<<endl;}while(cin>>s1){cout<<s1<<endl;cout<<endl;}return 0;
}

题目 1072: 汽水瓶

题目描述

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

输入格式

输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。

输出格式

对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

样例输入

3

10

81

0

样例输出

1

5

40

#include<stdio.h>
int main()
{int n;while(scanf("%d",&n)!=EOF){if(n==0){return 0;}printf("%d\n",n/2);}return 0;
}

题目 1145: C语言训练-自由落体问题

题目描述

一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹.求它在第N次落地时共经过多少米?

输入格式

反弹的次数N

输出格式

小球经过的路程(保留四位小数)

样例输入

2

样例输出

200.0000

有特例先解决特例,其余按照找到的规律来

#include<stdio.h>
int main()
{int n;//触地次数double h=100;//记得用double型,否则答案错误33double sum=100;int i;scanf("%d",&n);if(n==1)//先解决特例,这样下面就简单了 {printf("100.0000");return 0;}for(i=2;i<=n;i++){h=h/2;sum=sum+2*h;}printf("%.4lf",sum);return 0;
}

题目 1143: C语言训练-素数问题

题目描述

编写一个程序判断一个数是否为素数

输入格式

整数

输出格式

1或0(其中1表示此数为素数,0为表示为不是素数)

样例输入

5

样例输出

1

素数在算法中可以算是一个十分特别的存在了,我们时不时就遇见一个和素数有关的问题,所以常备几种快速解决素数的算法就变得十分的重要。

#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;int flag=0;for(int i=2;i*i<=n;i++)//记得是<=否则会答案错误80,加一个等号就对了{if(n%i==0){flag=1;}}if(flag!=0){cout<<"0";}else{cout<<"1";}return 0;
}

🍓🍓今日份修炼结束,再接再厉!!!

http://www.lryc.cn/news/67703.html

相关文章:

  • 利用GPU并行计算beta-NTI,大幅减少群落构建计算时间
  • Shiro框架漏洞分析与复现
  • (数字图像处理MATLAB+Python)第七章图像锐化-第一、二节:图像锐化概述和微分算子
  • C# | 内存池
  • 程序设计入门——C语言2023年5月10日
  • 【2023华为OD笔试必会25题--C语言版】《03 单入口空闲区域》——递归、数组、DFS
  • Grafana安装、升级与备份(02)
  • 【2023华为OD笔试必会25题--C语言版】《10 相同数字的积木游戏》——数组
  • awk命令编辑
  • Pinia和Vuex的区别
  • 《C++高并发服务器笔记——第四章Linux网络编程》
  • NFS服务器搭建(案例)
  • ubuntu 22.04 安装 Docker Desktop 及docker介绍
  • 微前端中的应用隔离是什么,一般是怎么实现的?
  • 【python pandas】合并文件并剔除重复数据
  • Spellman高压电源X射线发生器维修XRB160PN480X4593
  • msvcr120.dll丢失怎样修复?msvcr120.dll丢失修复的四个方法
  • 马哈鱼SQLFLow数据流生成介绍
  • 使用 MVC 模式,实现简单登录功能 (Kotlin)
  • ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF
  • 8. 100ASK_V853-PRO开发板支持MPP媒体处理平台
  • CLMP证书:让你在职场中脱颖而出的秘密武器!
  • 【从零开始】Docker Desktop:听说你小子要玩我
  • 制造业为什么要数字化?
  • NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗
  • Shell编程入门讲解
  • C++ 变量作用域
  • 【状态未成功】CONFIG_CFI_CLANG失败过程记录
  • 基于消息调度优化启动速度方案实践
  • 【C#】RemoveAt索引越界问题