PAT乙級題庫1011-1019(很水)

PAT乙級題庫1011

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        long long a,b,c;
        cin>>a>>b>>c;
        if(a+b>c){
            cout<<"Case #"<<i<<": true"<<endl;
        }else{
            cout<<"Case #"<<i<<": false"<<endl;
        }
    }
    return 0;
}
 

 

PAT乙級題庫1012

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int n;
    cin>>n;
    int A1=0;
    int A2=0;
    int flag=-1;
    int A3=0;
    float A4=0;
    int A4s=0;
    int A5=0;
    int f1=0,f2=0,f3=0,f4=0,f5=0;
    while(n--){
        int num;
        cin>>num;
        switch(num%5){
            case 0:if(num%2==0) A1=A1+num,f1=1;break;
            case 1:flag*=-1;A2=A2+flag*num;f2=1;break;
            case 2:A3++;f3=1;break;
            case 3:A4+=num;A4s++;f4=1;break;
            case 4:if(num>A5) A5=num;f5=1;break;
        }
    }
    if(f1){
        cout<<A1<<" ";
    }else{
        cout<<"N"<<" ";
    }
    if(f2){
        cout<<A2<<" ";
    }else{
        cout<<"N"<<" ";
    }
    if(f3){
        cout<<A3<<" ";
    }else{
        cout<<"N"<<" ";
    }
    if(f4){
        printf("%.1f ",A4/A4s);
    }else{
        cout<<"N"<<" ";
    }
    if(f5){
        cout<<A5<<endl;
    }else{
        cout<<"N"<<endl;
    }
}
 

稍微有點麻煩了,其實可以更簡潔

 

PAT乙級題庫1013

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int m,n,cou=0;
    cin>>m>>n;
    int times=0;
    for(int i=2;;i++){
        int isprime=0;
        if(i==2||i==3){
            isprime=1;
            cou++;
        }else if((i%2)*(i%3)){
            int sp=sqrt(i)+1;
            int flag=1;
            for(int j=2;j<=sp;j++){
                if(i%j==0){
                    flag=0;
                    break;
                }
            }
            if(flag){
                isprime=1;
                cou++;
            }
        }
        if(cou>n){
            break;
        }
        if(isprime){
            if(cou>=m&&cou<=n){
                if(times){
                    cout<<" ";
                }
                cout<<i;
                times++;
                if(times==10){
                    cout<<"\n";
                    times=0;
                }
            }
        }
    }
}

 

PAT乙級題庫1014

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main()
{
    string str1,str2,str3,str4;
    string WEEK[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
    cin>>str1>>str2>>str3>>str4;
    char p1=0,p2=0;
    int p3;
    int flag=0;
    for(int i=0;i<str1.size()&&i<str2.size();i++){
        if(str2[i]==str1[i]&&flag&&((str1[i]>='A'&&str1[i]<='N')||(str1[i]>='0'&&str1[i]<='9'))){
            p2=str1[i];
            break;
        }
        if(((str1[i]>='A'&&str1[i]<='G'))&&str2[i]==str1[i]&&!flag){
            p1=str1[i];
            flag=1;
        }
    }
    for(int i=0;i<str3.size()&&i<str4.size();i++){
        if(((str3[i]>='A'&&str3[i]<='Z')||(str3[i]>='a'&&str3[i]<='z'))&&str4[i]==str3[i]){
            p3=i;
            break;
        }
    }
    cout<<WEEK[p1-'A']<<" ";
    if(p2>='0'&&p2<='9'){
        printf("%02d:",p2-'0');
    }else{
        printf("%02d:",10+p2-'A');
    }
    printf("%02d\n",p3);
}
角度刁鑽,需要程序魯棒性很強

 

PAT乙級題庫1015

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 100000

int N,L,H;

struct student{
    int num;
    int a;//德行
    int s;//才能
    int flag;
}data[MAXN];

bool cmp(const student &a,const student &b){
    if(a.flag>b.flag){
        return true;
    }else if(a.flag<b.flag){
        return false;
    }else{
        if(a.a+a.s>b.a+b.s){
            return true;
        }else if(a.a+a.s<b.a+b.s){
            return false;
        }else{
            if(a.a>b.a){
                return true;
            }else if(a.a<b.a){
                return false;
            }else{
                if(a.num>b.num){
                    return false;
                }else{
                    return true;
                }
            }
        }
    }
}

int main()
{
    scanf("%d %d %d",&N,&L,&H);
    int sum=0;
    for(int i=0;i<N;i++){
        int num,a,s;
        scanf("%d %d %d",&num,&a,&s);
        if(a>=L&&s>=L){
            if(a>=H&&s>=H){
                data[sum].flag=4;
            }else if(a>=H&&s<H){
                data[sum].flag=3;
            }else if(a<H&&a>=s){
                data[sum].flag=2;
            }else{
                data[sum].flag=1;
            }
            data[sum].num=num;
            data[sum].a=a;
            data[sum].s=s;
            sum++;
        }
    }
    sort(data,data+sum,cmp);
    printf("%d\n",sum);
    for(int i=0;i<sum;i++){
        printf("%d %d %d\n",data[i].num,data[i].a,data[i].s);
    }
    return 0;
}
相當水

 

PAT乙級題庫1016

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
    char a[12],b[12],aa,bb;
    scanf("%s %c %s %c",a,&aa,b,&bb);
    int as=0,bs=0;
    for(int i=0;i<strlen(a);i++){
        if(a[i]==aa){
            as++;
        }
    }
    for(int i=0;i<strlen(b);i++){
        if(b[i]==bb){
            bs++;
        }
    }
    int ar=0,br=0;
    for(int i=0;i<as;i++){
        ar=ar*10+aa-'0';
    }
    for(int i=0;i<bs;i++){
        br=br*10+bb-'0';
    }
    printf("%d\n",ar+br);
}

水出精彩

 

PAT乙級題庫1017

x=input()
x=x.split()
print(int(x[0])//int(x[1]),int(x[0])%int(x[1]))

//python 3,lalala

 

PAT乙級題庫1018

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

int main()
{
    int N;
    scanf("%d",&N);
    getchar();
    int a[6],b[6];//勝負平,勝錘子,剪刀,布;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(a));
    while(N--){
        char aa,bb;
        scanf("%c %c",&aa,&bb);
        getchar();
        if(aa=='C'){
            switch(bb){
                case 'C':a[2]++,b[2]++;break;
                case 'J':a[0]++,b[1]++,a[3]++;break;
                case 'B':a[1]++,b[0]++,b[5]++;break;
            }
        }else if(aa=='J'){
            switch(bb){
                case 'C':a[1]++,b[0]++;b[3]++;break;
                case 'J':a[2]++,b[2]++;break;
                case 'B':a[0]++,b[1]++,a[4]++;break;
            }
        }else{
            switch(bb){
                case 'C':a[0]++,b[1]++,a[5]++;break;
                case 'J':a[1]++,b[0]++,b[4]++;break;
                case 'B':a[2]++,b[2]++;break;
            }
        }
    }
    printf("%d %d %d\n",a[0],a[2],a[1]);
    printf("%d %d %d\n",b[0],b[2],b[1]);
    if(a[5]>=a[4]&&a[5]>=a[3]){
        printf("B ");
    }else if(a[3]>=a[4]&&a[3]>=a[5]){
        printf("C ");
    }else{
        printf("J ");
    }
    if(b[5]>=b[4]&&b[5]>=b[3]){
        printf("B\n");
    }else if(b[3]>=b[4]&&b[3]>b[5]){
        printf("C\n");
    }else{
        printf("J\n");
    }
}

莫名的格式錯誤,害我用c語言的輸入輸出改了一遍才正確

 

PAT乙級題庫1019

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

void x(int n,int &big,int &small){
    int a[4]={0,0,0,0};
    a[0]=n%10,n=n/10;
    a[1]=n%10,n=n/10;
    a[2]=n%10,n=n/10;
    a[3]=n%10;
    sort(a,a+4);
    big=a[3]*1000+a[2]*100+a[1]*10+a[0];
    small=(a[0]*1000+a[1]*100+a[2]*10+a[3]);

}
int main()
{
    int n,flag=1;
    scanf("%d",&n);
    if(n%1111==0){
        printf("%d - %d = 0000\n",n,n);
    }else{
        int a,b;
        while(n!=6174||flag){
            x(n,a,b);
            flag=0;
            printf("%04d - %04d = %04d\n",a,b,a-b);
            n=a-b;
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章