首页 > 代码库 > PAT 乙级 (将剩下的做了)

PAT 乙级 (将剩下的做了)

为了提高准确率,不测试结果直接交。

1053 

模拟。第二个条件注意看清楚....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n, d, x;
    double e, tp;
    cin >> n >> e >> d;
    int may = 0, ab = 0;
    for(int i = 1; i <= n; i++)
    {
        cin >> x;
        int sum = 0;
        for(int j = 1; j <= x; j++)
        {
            cin >> tp;
            if(tp < e)
                sum ++;
        }
        if (sum > x / 2)
        {
            if(x > d)   //看题看仔细,并不是sum > d
                ab ++;
            else
                may ++;
        }
    }
    printf("%.1f%% %.1f%%\n",(double)may * 100 / n, (double)ab * 100 / n);
}


1047

 求队伍得分最高的 队伍编号和队伍总得分。队员编号无意义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
#define MEM(a,b) memset(a,b,sizeof(a))
using namespace std;
int main()
{
    int max_res = -1;
    int max_pos = -1;
    int n, x, y, z;
    scanf("%d",&n);
    int mp[1010];
    MEM(mp,0);
    while(n--)
    {
        scanf("%d-%d%d",&x, &y, &z);
        mp[x] += z;
        if(mp[x] > max_res)
        {
            max_res = mp[x];
            max_pos = x;
        }
    }
    printf("%d %d\n",max_pos,max_res);
}

1043

 无FUCK说

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string str;
    cin >> str;
    int P = 0, A = 0, T = 0, e = 0, s = 0, t = 0;
    for(int i = 0; i < str.size(); i++)
    {
        if(str[i] == ‘P‘)P++;
        else if(str[i] == ‘A‘)A++;
        else if(str[i] == ‘T‘)T++;
        else if(str[i] == ‘e‘)e++;
        else if(str[i] == ‘s‘)s++;
        else if(str[i] == ‘t‘)t++;
    }
    while(P > 0 || A > 0 || T > 0 || e > 0 || s > 0 || t > 0)
    {
        if(P > 0) printf("P"),P--;
        if(A > 0) printf("A"),A--;
        if(T > 0) printf("T"),T--;
        if(e > 0) printf("e"),e--;
        if(s > 0) printf("s"),s--;
        if(t > 0) printf("t"),t--;
    }
}

1033

题目说:题目保证第2行输入的文字串非空。意思就是第一行可能为空。所以必须用geline不能用cin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string bad, str;
    getline(cin,bad); // 不能用cin
    getline(cin,str);
    int op[150];
    memset(op,0,sizeof(op));
    for(int i = 0; i < bad.size(); i++)
    {
        op[bad[i]]++;
        if(bad[i] >= ‘A‘ && bad[i] <= ‘Z‘)
            op[tolower(bad[i])]++;
    }
    for(int i = 0; i < str.size(); i++)
    {
        if(op[ str[i] ] == 0)
        {
            if(str[i] >= ‘A‘ && str[i] <= ‘Z‘ && op[‘+‘] > 0)
                continue;
            else
                cout << str[i];
        }
    }
    cout << endl;
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
    string bad, str;
    getline(cin,bad); // 不能用cin
    getline(cin,str);
    int op[150];
    memset(op,0,sizeof(op));
    for(int i = 0; i < bad.size(); i++)
    {
        op[bad[i]]++;
        if(bad[i] >= ‘A‘ && bad[i] <= ‘Z‘)
            op[tolower(bad[i])]++;
    }
    for(int i = 0; i < str.size(); i++)
    {
        if(op[ str[i] ] == 0)
        {
            if(str[i] >= ‘A‘ && str[i] <= ‘Z‘ && op[‘+‘] > 0)
                continue;
            else
                cout << str[i];
        }
    }
    cout << endl;
}

PAT 乙级 (将剩下的做了)