杭电 2034 人见人爱A-B

http://acm.hdu.edu.cn/showproblem.php?pid=2034

人见人爱A-B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 43093    Accepted Submission(s): 12090

Problem Description

参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下)

呵呵,很简单吧?

Input

每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开.

如果n=0并且m=0表示输入的结束,不做处理。

Output

针对每组数据输出一行数据,表示A-B的结果,如果结果为空集合,则输出“NULL”,否则从小到大输出结果,为了简化问题,每个元素后面跟一个空格.

Sample Input

3 3 1 2 3 1 4 7
3 7 2 5 8 2 3 4 5 6 7 8
0 0

Sample Output

2 3
NULL

简单题,细心一点就可以了。

AC代码:

<span style="font-size:24px;">#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int cmp(int a,int b)
{
	return a<b;
}

int main()
{
	int a[101],b[101],c[101],m,n,i,j,k;
	while(~scanf("%d%d",&m,&n))
	{
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(c,0,sizeof(c));
		if(m==0&&n==0)break;
		for(i=0;i<m;i++)
			scanf("%d",&a[i]);
		for(j=0;j<n;j++)
			scanf("%d",&b[j]);
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				if(a[i]==b[j])
					a[i]=0;
				continue;
			}
		}
			k=0;
			for(i=0;i<m;i++)
			{
				if(a[i]!=0)
				{
					c[k]=a[i];
					k++;
				}
			}
			sort(c,c+k,cmp);
			if(k==0)
				printf("NULL\n");
			else
			{
				for(i=0;i<k;i++)
					printf("%d ",c[i]);
				printf("\n");
			}

	}
	return 0;
}</span>
时间: 2024-12-25 19:17:51

杭电 2034 人见人爱A-B的相关文章

杭电2034——人见人爱A-B

#include <stdio.h> #include <algorithm> using namespace std; int main () { int a[110],b[110],c[110]; int m,n; int i,j,k; int flag; scanf("%d%d",&m,&n); while (m!=0||n!=0) { k = 0; flag = 0; for (i=0;i<m;i++) scanf("%d

杭电 2034

人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 43364    Accepted Submission(s): 12193 Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的

杭电2035人见人爱A^B

级新生)除了校赛,还有什么途径可以申请加入ACM校队?  人见人爱A^B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 33751    Accepted Submission(s): 22894 Problem Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方” Input 输入数据包含多个测试

杭电 2035 人见人爱A^B【快速幂取模】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2035 解题思路:这一题数据不大,可以用同余来做,也可以用快速幂来做 反思:定义成 #include<stdio.h> int quick_mod(int a,int b,int m) { int ans=1; while(b) { if(b&1) { ans=(ans*a)%m; b--; } b=b>>1; a=a*a%m; } return ans; } int main(

杭电 2035 人见人爱A^B【同余】

#include<stdio.h> int main() { int a,b; int s; int i; while(scanf("%d %d",&a,&b)!=EOF&&a&&b) { s=1; for(i=1;i<=b;i++) { s*=a%1000; s=s%1000; } printf("%d\n",s%1000); } }

杭电oj_2035——人见人爱A^B(java实现)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2035 思路:(网上学来的,偏向数学的不咋懂/捂脸)每次乘法的时候都取后三位(可能有些含糊,直接看代码吧,一看就懂) source code: package hduoj; import java.util.Scanner; public class hdoj_2035 { public static void main(String[] args) { Scanner sc = new Scanne

人见人爱A+B(杭电2033)

/*人见人爱A+B Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的最爱,希望今天的这个A+B能给大家带来好运,也希望这个题目能唤起大家对ACM曾经的热爱. 这个题目的A和B不是简单的整数,而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒. Input 输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

杭电ACM题目分类

杭电ACM题目分类 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028. 1029.1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092. 1093.1094.1095.1096.1097.1098.1106.1108.1157.1163.1164.1170.1194.1196. 1197.1201.1202.1205.1219.1234.123