一开始运行的时候,测试点3,4有段错误
其实一般是由数组越界引起的,把数组设置的大一点,因为迭代的时候,可能会超过100
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
bool a[110000];//初始值都是false
int b[110000]={0},c[110000]={0};
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int k=0;
cin>>k;
memset(a,false,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
for(int i=0;i<k;i++)
{
cin>>c[i];
b[i]=c[i];
while(b[i]!=1)
{
if(b[i]%2==0)
{
b[i]=b[i]/2;
}
else
{
b[i]=(b[i]*3+1)/2;
}
a[b[i]]=true;
}
}
sort(&c[0],&c[k],cmp);
int s=0;
for(int i=0;i<k;i++)
{
if(!a[c[i]]) { if(s==1) cout<<" ";cout<<c[i];s=1;}
}
}