PAT 乙级 1005

来源:互联网 发布:古典音乐流行音乐知乎 编辑:程序博客网 时间:2024/05/21 08:05

这一题我犯了两个错误:

1 把a数组想当然的设置为100,但当某个数乘以3就超过了100.

2 把题理解错了,是除后再加一。


#include<iostream>#include<algorithm>#include<cstring>using namespace std;int main(){int n;cin>>n;int a[10000]={0},b[105];memset(a,0,sizeof(a));for(int i=0;i<n;i++){cin>>b[i];}sort(b,b+n);for(int i=0;i<n;i++){a[b[i]]=-1;}for(int i=0;i<n;i++){while(b[i]!=1){   if(b[i]%2!=0){b[i]=(b[i]*3+1)/2;a[b[i]]+=1;}else{b[i]=b[i]/2;a[b[i]]+=1;}}}int k=0,c[1000];for(int i=100;i>=2;i--){if(a[i]==-1)  c[k++]=i;}cout<<c[0];for(int i=1;i<=k-1;i++)  cout<<" "<<c[i];cout<<endl;  return 0;}


原创粉丝点击