B1005
遇到了两个问题:
一是他这里提示段错误,那就是hashtable设的值太小或者说他没有放在main函数外
二是普通数组进行排序时应该sort(a,a+n,cmp)而不是vector中的sort(a.begin(),b.begin(),cmp)
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
bool hashtable[10001]={0};
int main()
{
int k,m;
int a[101];
scanf("%d",&k);
for(int i=0;i<k;i++)
{
scanf("%d",&a[i]);
m=a[i];
while(m!=1)
{
if(m%2==0) m=m/2;
else if(m%2==1) m=(3*m+1)/2;
hashtable[m]=true;
}
}
int counter=0;
sort(a,a+k,cmp);
for(int i=0;i<k;i++)
{
if(!hashtable[a[i]])
counter++;
}
for(int i=0;i<k;i++)
{
if(!hashtable[a[i]])
{
printf("%d",a[i]);
counter--;
if(counter>0) printf(" ");
}
}
return 0;
}
A1048
#include<iostream>
using namespace std;
int a[1001];
int main()
{
int n,m,temp;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&temp);
a[temp]++;//记录每个数字出现的次数
}
for(int i=0;i<1001;i++)
{
if(a[i]&&a[m-i])
{
if(i==m-i&&a[i]<=1)
continue;
printf("%d %d\n",i,m-i);
return 0;
}
}
printf("No Solution\n");
return 0;
}