1、map解决
2、set解决
3、大模拟,写了近300行,只要不手残一般能写出来吧~
4、不会做,先写了个搜索,然而超内存了,求教~~
1、
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
map<int ,int > ma;
int main()
{
int n,m;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int a;
scanf("%d",&a);
ma[a]++;
}
scanf("%d",&m);
for(int i=0;i<m;i++)
{
int b;
scanf("%d",&b);
if(ma[b]==0)
{
}
else
{
printf("%d ",b);
}
}
return 0;
}
2、
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
set<LL> s;
int main()
{
LL a;
while(cin>>a)
{
if(a==0)
{
break;
}
s.insert(a);
}
cout<<s.size()<<endl;
return 0;
}
3、
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
char s[1005];
char ans[100][100];
void work(char c,int x,int y)
{
if(c=='0')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y]='*';
ans[x+1][y+2]='*';
ans[x+2][y]='*';
ans[x+2][y+2]='*';
ans[x+3][y]='*';
ans[x+3][y+2]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='1')
{
ans[x][y]='*';
ans[x+1][y]='*';
ans[x+2][y]='*';
ans[x+3][y]='*';
ans[x+4][y]='*';
}
else if(c=='2')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y+2]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='3')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y+2]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y+2]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='4')
{
ans[x][y]=ans[x][y+2]='*';
ans[x+1][y]='*';
ans[x+1][y+2]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y+2]='*';
ans[x+4][y+2]='*';
}
else if(c=='5')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y+2]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='6')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y]='*';
ans[x+3][y+2]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='7')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y+2]='*';
ans[x+2][y+2]='*';
ans[x+3][y+2]='*';
ans[x+4][y+2]='*';
}
else if(c=='8')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y]='*';
ans[x+1][y+2]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y]='*';
ans[x+3][y+2]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='9')
{
ans[x][y]=ans[x][y+1]=ans[x][y+2]='*';
ans[x+1][y]='*';
ans[x+1][y+2]='*';
ans[x+2][y]='*';
ans[x+2][y+1]='*';
ans[x+2][y+2]='*';
ans[x+3][y+2]='*';
ans[x+4][y]=ans[x+4][y+1]=ans[x+4][y+2]='*';
}
else if(c=='+')
{
ans[x+1][y+1]='*';
ans[x+2][y]=ans[x+2][y+1]=ans[x+2][y+2]='*';
ans[x+3][y+1]='*';
}
else if(c=='-')
{
ans[x+2][y]=ans[x+2][y+1]=ans[x+2][y+2]='*';
}
else if(c=='*')
{
ans[x+1][y]=ans[x+1][y+2]='*';
ans[x+2][y+1]='*';
ans[x+3][y]=ans[x+3][y+2]='*';
}
else if(c=='/')
{
ans[x+1][y+2]='*';
ans[x+2][y+1]='*';
ans[x+3][y]='*';
}
else if(c=='=')
{
ans[x+1][y]=ans[x+1][y+1]=ans[x+1][y+2]=ans[x+1][y+3]='*';
ans[x+3][y]=ans[x+3][y+1]=ans[x+3][y+2]=ans[x+3][y+3]='*';
}
else if(c=='.')
{
ans[x+3][y]=ans[x+3][y+1]='*';
ans[x+4][y]=ans[x+4][y+1]='*';
}
}
int main()
{
gets(s);
int len=strlen(s);
for(int i=0; i<100; i++)
{
for(int j=0; j<100; j++)
{
ans[i][j]=' ';
}
}
int a=0,b=0;
int pos;
char c;
for(int i=0; i<len; i++)
{
if(s[i]==' ')
{
pos=i;
break;
}
a=a*10+(s[i]-'0');
}
for(int i=pos; i<len; i++)
{
if(s[i]>='0'&&s[i]<='9')
{
b=b*10+(s[i]-'0');
}
}
c=s[pos+1];
int sum;
s[len++]='=';
char ss[10];
if(c=='+')
{
sum=a+b;
sprintf(ss,"%d",sum);
for(int i=0; i<strlen(ss); i++)
{
s[len++]=ss[i];
}
s[len]=0;
}
else if(c=='-')
{
sum=a-b;
sprintf(ss,"%d",sum);
for(int i=0; i<strlen(ss); i++)
{
s[len++]=ss[i];
}
s[len]=0;
}
else if(c=='*')
{
sum=a*b;
sprintf(ss,"%d",sum);
for(int i=0; i<strlen(ss); i++)
{
s[len++]=ss[i];
}
s[len]=0;
}
else if(c=='/')
{
if(a%b==0)
{
sum=a/b;
sprintf(ss,"%d",sum);
for(int i=0; i<strlen(ss); i++)
{
s[len++]=ss[i];
}
s[len]=0;
}
else
{
double f=a*1.0/b;
sprintf(ss,"%.2f",f);
for(int i=0; i<strlen(ss); i++)
{
s[len++]=ss[i];
}
s[len]=0;
}
}
int x=0,y=0;
for(int i=0; i<len; i++)
{
work(s[i],x,y);
if(s[i]==' ')
{
continue;
}
if(s[i]=='1')
{
y+=3;
}
else if(s[i]=='=')
{
y+=6;
}
else if(s[i]=='.')
{
y+=4;
}
else
{
y+=5;
}
}
for(int i=0; i<x+6; i++)
{
for(int j=0; j<y; j++)
{
printf("%c",ans[i][j]);
}
printf("\n");
}
return 0;
}
4、没过就不贴出来。。