问题 A: 剩下的树
时间限制: 1 Sec 内存限制: 32 MB提交: 742 解决: 368
[ 提交][ 状态][ 讨论版][命题人: 外部导入]
题目描述
有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。
现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。
可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。
输入
两个整数L(1<=L<=10000)和M(1<=M<=100)。
接下来有M组整数,每组有一对数字。
输出
可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。
样例输入
4 2
1 2
0 2
11 2
1 5
4 7
0 0
样例输出
2
5
#include <cstdio>
#include <cstring>
int main()
{
int l,m,c,b;
while(scanf("%d%d",&l,&m),l&&m)
{
int a[l+1];
memset(a,0,sizeof(a));
while(m--)
{
scanf("%d%d",&c,&b);
for(int i=c;i<=b;i++)
{
a[i]=1;
}
}
int j=0;
for(int i=0;i<l+1;i++)
{
if(a[i]==0)
{
j++;
}
}
printf("%d\n",j);
}
return 0;
}
注意多次输入 j需每次都赋值否则累计
第一次没考虑输入0 0结束
用数组做的...
开始把区间的一个端点赋成了a,,,和数组同名了....
问题 B: A+B
时间限制: 1 Sec 内存限制: 32 MB提交: 480 解决: 316
[ 提交][ 状态][ 讨论版][命题人: 外部导入]
题目描述
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。
输入
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。
输出
请计算A+B的结果,并以正常形式输出,每组数据占一行。
样例输入
-234,567,890 123,456,789
1,234 2,345,678
样例输出
-111111101
2346912
这题真的无能啊....我真的不会写.....借鉴了大佬的....TAT
虽然想到sscanf但还是没做TAT
#include<cstdio>
#include<cstring>
void change(char a[],char b[])
{
int j=0;
for(int i=0;i<strlen(a);i++)
{
if(a[i]!=',')
b[j++]=a[i];
}
}
int main()
{
char a[20],b[20];
while(scanf("%s%s",a,b)!=EOF)
{
char c[20]={},d[20]={};
change(a,c);
change(b,d);
long int num1,num2;
sscanf(c,"%ld",&num1);
sscanf(d,"%ld",&num2);
printf("%ld\n",num1+num2);
}
return 0;
}
感觉好蠢啊....效仿大佬的代码....最后三个%ld还打成了lf lf %ld 我是不是傻....
问题 C: 特殊乘法
时间限制: 1 Sec 内存限制: 32 MB提交: 370 解决: 286
[ 提交][ 状态][ 讨论版][命题人: 外部导入]
题目描述
输入
两个小于1000000000的数
输出
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入
24 65
42 66666
3 67
样例输出
66
180
39
#include <cstdio>
#include <cstring>
int main()
{
long int a,b;
while(scanf("%ld%ld",&a,&b)!=EOF)
{
char s1[20], s2[20];
sprintf(s1,"%ld",a);
sprintf(s2,"%ld",b);
long int sum=0;
for(int i=0;i<strlen(s1);i++)
for(int j=0;j<strlen(s2);j++)
{
sum+=(s1[i]-'0')*(s2[j]-'0');
}
printf("%ld\n",sum);
}
return 0;
}
可以直接定义char数组
为了练习一下sscanf
想了半天-'0'....
问题 D: 比较奇偶数个数
时间限制: 1 Sec 内存限制: 32 MB提交: 370 解决: 267
[ 提交][ 状态][ 讨论版][命题人: 外部导入]
题目描述
第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。
输入
输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000)。
输出
如果偶数比奇数多,输出NO,否则输出YES。
样例输入
1
67
7
0 69 24 78 58 62 64
样例输出
YES
NO
#include <cstdio>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int o=0,e=0,a;
while(n--)
{
scanf("%d",&a);
if(a%2==0)
{
e++;
}
else
o++;
}
if(o<e)
printf("NO\n");
if(o>e)
printf("YES\n");
}
return 0;
}