PAT-Basic刷题1021-1030

1021 个位数统计

#include
#include
#include
using namespace std;
int main(){
    string s;
    int a[10]={0};
    cin>>s;
    for(int i=0;i<s.length();i++)
        a[s[i]-'0']++;
    for(int i=0;i<10;i++)
        if(a[i]!=0)
            cout<<i<<":"<<a[i]<<endl;
    return 0;
}

1022 D进制的A+B

#include
#include
#include
using namespace std;
int main(){
    int a,b,d;
    cin>>a>>b>>d;
    int t=a+b;
    if(t==0){
        cout<<t;return 0;
    }
    int i=0,result[100];
    while(t!=0){
        result[i++]=t%d;
        t=t/d;
    }
    for(int j=i-1;j>=0;j--)
        cout<<result[j];
    return 0;
}

1023 组个最小数

#include
using namespace std;
int main(){
    int a[10]={0};
    for(int i=0;i<10;i++)
        cin>>a[i];
    for(int i=1;i<10;i++){
        if(a[i]!=0){
            cout<<i;
            a[i]--;
            break;
        }
    }
    for(int i=0;i<10;i++)
        for(int j=0;j<a[i];j++)
            cout<<i;
    return 0;
}

1024 科学计数法

#include
using namespace std;
int main(){
    string s;
    cin>>s;
    int i=0;
    while(s[i]!='E') i++;
    string t=s.substr(1,i-1);//E之前的小数
    int n=stoi(s.substr(i+1));//指数
    if(s[0]=='-')  cout<<"-";
    if(n<0){
        cout<<"0.";
        for(int i=0;i<abs(n)-1;i++)
            cout<<'0';
        for(int j=0;j<t.length();j++)
            if(t[j]!='.') cout<<t[j];
    }else{
        cout<<t[0];
        int j,cnt;
        for( j=2,cnt=0;j<t.length()&&cnt<n;j++,cnt++)
            cout<<t[j];
        if(j==t.length())
            for(int i=0;i<n-cnt;i++)
                cout<<'0';
        else{//仍是小数
            cout<<'.';
            for(int i=j;i<t.length();i++)
                cout<<t[i];
        }
    }
    return 0;
}

1025 反转链表

#include
#include
#include
#define N 100005
using namespace std;
int main(){
    int first,n,k;
    cin>>first>>n>>k;
    int data[N],next[N],list[N];
    int temp;
    for(int i=0;i<n;i++){
        cin>>temp;
        cin>>data[temp]>>next[temp];
    }
    int sum=0;
    while(first!=-1){
        list[sum++]=first;
        first=next[first];
    }
    for(int i=0;i<sum-(sum%k);i+=k)
        reverse(begin(list)+i,begin(list)+i+k);
    for(int i=0;i<sum-1;i++)
        printf("%05d %d %05d\n",list[i],data[list[i]],list[i+1]);
    printf("%05d %d -1\n",list[sum-1],data[list[sum-1]]);    
    return 0;
}

1026 程序运行时间

#include
using namespace std;
int main(){
    int a,b;
    cin>>a>>b;
    int t=(b-a+50)/100;//四舍五入 加0.5
    printf("%02d:%02d:%02d",t/3600,t%3600/60,t%60);
    return 0;
}

1027 打印沙漏

#include
using namespace std;
int main(){
    int n;
    char c;
    cin>>n>>c;
    int row=0;
    for(int i=0;i<n;i++){
        if(i*(i+2)*2+1>n){
            row=i-1;break;
        }
    }
    for(int i=row;i>=1;i--){
        for(int j=row-i;j>=1;j--)
            cout<<" ";
        for(int j=2*i+1;j>=1;j--)
            cout<<c;
        cout<<endl;
    }
    for(int i=0;i<row;i++)
        cout<<" ";
    cout<<c<<endl;
    for(int i=1;i<=row;i++){
        for(int j=row-i;j>=1;j--)
            cout<<" ";
        for(int j=i*2+1;j>=1;j--)
            cout<<c;
        cout<<endl;
    }
    cout<<(n-((row+2)*row*2+1));
    return 0;
}

1028 人口普查

#include
using namespace std;
int main(){
    int n,cnt=0;
    cin>>n;
    string name,birth,maxname,minname,maxbirth="1814/09/06",minbirth="2014/09/06";
    for(int i=0;i<n;i++){
        cin>>name>>birth;
        if(birth>="1814/09/06"&&birth<="2014/09/06"){
            cnt++;
            if(birth>=maxbirth){
                maxname=name;
                maxbirth=birth;
            }
            if(birth<=minbirth){
                minname=name;
                minbirth=birth;
            }
        }
    }
    cout<<cnt;
    if(cnt!=0) 
        cout<<" "<<minname<<" "<<maxname;
    return 0;
}

1029 旧键盘

#include
using namespace std;
int main(){
    string s1,s2,ans;
    cin>>s1>>s2;
    for(int i=0;i<s1.length();i++)
        if(s2.find(s1[i])==string::npos&&ans.find(toupper(s1[i]))==string::npos)
            ans+=toupper(s1[i]);
    cout<<ans;
    return 0;
}

1030 完美数列

#include
#include
#include
using namespace std;
int main(){
    int n;long long p;
    scanf("%d%lld",&n,&p);
    vector<int> v(n);
    for(int i=0;i<n;i++)
        cin>>v[i];
    sort(v.begin(),v.end());
    int result=0,num=0;
    for(int i=0;i<n;i++){
        for(int j=i+result;j<n;j++){
            if(v[j]<=v[i]*p){
                num=j-i+1;
                if(result<num)
                    result=num;
            }
            else break;
                
        }
    }
    cout<<result;
    return 0;
}

你可能感兴趣的:(C++)