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

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

 博主:命运之光

专栏:算法修炼之练气篇

算法修炼之练气期.gif

题目 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

我们先分析一下题目

20221227114313_63029.jpg

具体我想的思路就是:

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

代码

#include<stdio.h>inta[10005];//L长度<=10000intmain()
{
intcount=0;//这个来计算地铁长度inti;//下面要用intL,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--)//有多少个区域执行几次    {
intleft,right;//声明区域左值和右值scanf("%d %d",&left,&right);
for(i=left;i<=right;i++)
        {
//看好了,下来是重点喽,直接解决这个问题if(a[i]==0)
            {
a[i]=1;
count++;//马路长度递加了哦!很容易吧!            }
        }
    }
printf("%d",L-count);//马路长度-地铁长度=剩下的树的数量return0;
}

image.gif

调试结果

20221227114740_25873.jpg

正确答案

298

我的答案

297

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

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

image.gif

修改后代码

#include<stdio.h>inta[10005];//L长度<=10000intmain()
{
intcount=0;//这个来计算地铁长度inti;//下面要用intL,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--)//有多少个区域执行几次    {
intleft,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);//马路长度-地铁长度=剩下的树的数量return0;
}

image.gif

结果正确

题目 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>usingnamespacestd;
intmain()
{
chars2[1000];
strings1;
intn;
cin>>n;
getchar();//吃一个回车符号,因为下面用了一个gets()因为gets()会把回车符也认为是输入 while(n--)
    {
gets(s2);
cout<<s2<<endl;
cout<<endl;
    }
while(cin>>s1)
    {
cout<<s1<<endl;
cout<<endl;
    }
return0;
}

image.gif

题目 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>intmain()
{
intn;
while(scanf("%d",&n)!=EOF)
    {
if(n==0)
        {
return0;
        }
printf("%d\n",n/2);
    }
return0;
}

image.gif

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

题目描述

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

输入格式

反弹的次数N

输出格式

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

样例输入

2

样例输出

200.0000

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

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

image.gif

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

题目描述

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

输入格式

整数

输出格式

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

样例输入

5

样例输出

1

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

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

image.gif

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

相关文章
|
算法 C语言 C++
算法修炼之练气篇——练气三层
简介: 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
151 0
|
机器学习/深度学习 算法 C语言
算法修炼之练气篇——练气十六层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
91 0
|
算法 C语言 C++
算法修炼之练气篇——练气二十一层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
174 0
算法修炼之练气篇——练气二十一层
|
人工智能 算法 Go
算法修炼之练气篇——练气二十二层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
201 0
|
算法 C语言 C++
算法修炼之练气篇——练气二十层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
112 0
|
算法 C语言 C++
算法修炼之练气篇——练气十九层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
121 0
|
机器学习/深度学习 算法 C语言
算法修炼之练气篇——练气十八层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
122 0
|
算法 C语言 C++
算法修炼之练气篇——练气十七层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
98 0
|
算法 数据安全/隐私保护 C语言
算法修炼之练气篇——练气十五层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
82 0
|
算法 C语言 C++
算法修炼之练气篇——练气十四层
每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
142 0