PAT-Basic刷题1031-1040

1031 查验身份证

#include
using namespace std;
int a[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int b[11]={1, 0, 10 ,9 ,8 ,7 ,6, 5, 4, 3 ,2};
string s;
bool isTrue(){
    int sum=0;
    for(int i=0;i<17;i++){
        if(s[i]<'0'||s[i]>'9')  return false;
        sum+=(s[i]-'0')*a[i];
    }
    int temp=(s[17]=='X')?10:(s[17]-'0');
    return b[sum%11]==temp;
}
int main(){
    int n,flag=0;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>s;
        if(!isTrue()){
            cout<<s<<endl;
            flag=1;
        }
    }
    if(flag==0) cout<<"All passed";
    return 0;
}

1032 挖掘机技术哪家强

#include
#include
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<int> a(n+1);
    int num,score;
    for(int i=0;i<n;i++){
        cin>>num>>score;
        a[num]+=score;
    }
    int mmax=a[1],t=1;
    for(int i=2;i<n+1;i++){
        if(mmax<a[i]){
            mmax=a[i];
            t=i;
        }
    }
    cout<<t<<" "<<mmax;
    return 0;
}

1033 旧键盘打字

#include
#include
using namespace std;
int main(void){
    string bad,should;
    getline(cin,bad);getline(cin,should);
    for(int i=0;i<should.size();i++){
        if(bad.find(toupper(should[i]))!=string::npos) continue;
        if(isupper(should[i])&&bad.find('+')!=string::npos) continue;
        cout<<should[i];         
    }
}

1034 有理数四则运算

#include
#include
using namespace std;
long long a,b,c,d;
long long gcd(long long t1,long long t2){
    return t2==0?t1:gcd(t2,t1%t2);
}
void func(long long m,long long n){
    if(m*n==0){
        printf("%s",n==0?"Inf":"0");
        return ;
    }
    bool flag=((m<0&&n>0)||(m>0&&n<0));
    m=abs(m);n=abs(n);
    long long x=m/n;
    printf("%s",flag?"(-":"");
    if(x!=0) printf("%lld",x);
    if(m%n==0){
        if(flag) printf(")");
        return ;
    }
    if(x!=0) printf(" ");
    m=m-x*n;
    long long t=gcd(m,n);
    m=m/t;n=n/t;
    printf("%lld/%lld%s",m,n,flag?")":"");
}
int main(){
    scanf("%lld/%lld %lld/%lld", &a, &b, &c, &d);
    func(a,b);printf(" + ");func(c,d);printf(" = ");func(a*d+b*c,b*d);cout<<endl;
    func(a,b);printf(" - ");func(c,d);printf(" = ");func(a*d-b*c,b*d);cout<<endl;
    func(a,b);printf(" * ");func(c,d);printf(" = ");func(a*c,b*d);cout<<endl;
    func(a,b);printf(" / ");func(c,d);printf(" = ");func(a*d,b*c);cout<<endl;
    return 0;
}

1035 插入与归并

#include
#include
using namespace std;
int main(void){
    int n,a[100],b[100],i,j;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    for(int i=0;i<n;i++)
        cin>>b[i];
    for(i=0;i<n-1&&b[i]<=b[i+1];i++);
    for(j=i+1;a[j]==b[j]&&j<n;j++);
    if(j==n){
        cout<<"Insertion Sort"<<endl;
        sort(a,a+i+2);
    }
    else{
        cout<<"Merge Sort"<<endl;
        int k=1,flag=1;
        while(flag){
            flag=0;
            for(int i=0;i<n;i++){
                if(a[i]!=b[i])
                    flag=1;                
            }
            k=k*2;
            for(i=0;i<n/k;i++)
                sort(a+i*k,a+(i+1)*k);
            sort(a+n/k*k,a+n);
            
        }
    }
    for(j=0;j<n;j++){
        if(j!=0) printf(" ");
        printf("%d",a[j]);
    }
    return 0;
        
}

1036 跟奥巴马一起编程

#include
using namespace std;
int main(){
    int n;char c;
    cin>>n>>c;
    for(int i=0;i<n;i++)
        cout<<c;
    cout<<endl;
    for(int i=0;i<n/2+n%2-2;i++){
        cout<<c;
        for(int j=0;j<n-2;j++)
            cout<<" ";
        cout<<c<<endl;
    }
    for(int i=0;i<n;i++)
        cout<<c;
}

1037 在霍格沃茨找零钱

#include
using namespace std;
int main(){
    int a,b,c,m,n,t,x,y,z;
    scanf("%d.%d.%d %d.%d.%d",&a,&b,&c,&m,&n,&t);
    if((a>m)||(a==m&&b>n)||(a==m&&b==n&&c>t)){
        swap(a,m);swap(b,n);swap(c,t);
        cout<<"-";
    }
    z=t<c?t+29-c:t-c;
    n=t<c?n-1:n;
    y=n<b?n-b+17:n-b;
    x=n<b?m-a-1:m-a;
    printf("%d.%d.%d",x,y,z);
    return 0;
}

1038 统计同成绩学生

#include
#include
using namespace std;
int main(){
    int n,m,temp;
    cin>>n;
    vector<int> b(101);
    for(int i=0;i<n;i++){
        cin>>temp;
        b[temp]++;
    }
    cin>>m;
    for(int i=0;i<m;i++){
        cin>>temp;
        if(i!=0) cout<<" ";
        cout<<b[temp];
    }
    return 0;
}

1039 到底买不买

#include
#include
using namespace std;
int book[256];
int main(){
    string a,b;
    cin>>a>>b;
    for(int i=0;i<a.size();i++)
        book[a[i]]++;
    int res=0;
    for(int i=0;i<b.size();i++)
        if(book[b[i]]>0)
            book[b[i]]--;
        else
            res++;
    if(res!=0)
        cout<<"No "<<res;
        
    else
        cout<<"Yes "<<a.size()-b.size();
    return 0;
}

1040 有几个PAT

#include
#include
using namespace std;
int main(){
    string s;
    cin>>s;
    int len=s.size(),p_cnt=0,t_cnt=0,res=0;
    for(int i=0;i<len;i++){
        if(s[i]=='T')
            t_cnt++;
    }
    for(int i=0;i<len;i++){
        if(s[i]=='P') p_cnt++;
        if(s[i]=='T') t_cnt--;
        if(s[i]=='A') res=(res+(p_cnt*t_cnt)%1000000007)%1000000007;
    }
    cout<<res;
    return 0;
}

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