1、某校大门外长度为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
我的代码是
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int l , m , s , e , i , j , n = 0;
cin >> l >> m;
int * tree = new int[l + 2] {0};
for(i = 1; i <= m; ++ i)
{
cin >> s >> e;
for(j = s; j <= e; ++ j) tree[j] = 1;
}
for(i = 1; i < l + 2; ++ i) n += !tree[i] ? 1 : 0;
delete [] tree;
cout << n << endl;
return 0;
}
2、一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768)
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开
如果没有满足要求的答案,则输出两个0。
输入样例:
2
3
20
输出样例:
0 0
5 10
我的代码是
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
struct Animal
{
int min;
int max;
};
int main()
{
int n , a , i , j , ji = 0 , tu = 0;
cin >> n;
Animal * animal = new Animal[n];
for(i = 0; i < n; ++ i)
{
cin >> a;
if(a % 2 || a % 4)
{
animal[i].min = animal[i].max = 0;
continue;
}
j = a;
tu += j / 4;
j -= j / 4 * tu;
if(j > 0)
{
ji += j / 2;
j -= j / 2 * ji;
}
animal[i].min = tu + ji;
ji = 0;
j = a;
ji += j / 2;
j -= j / 2 * ji;
animal[i].max = ji;
}
for(i = 0; i < n; ++ i) cout << animal[i].min << " " << animal[i].max << endl;
delete [] animal;
return 0;
}
请大佬帮忙看一下,哪里有问题,两段代码在ide上都能正确输出,但提交就是错了