Devil PAT training DAY1

Devil PAT training DAY1

3.1. Simple simulation

B1001. Killed attractiveness of the (3n + 1) guess (15 ')

#include <iostream>
using namespace std;
int main() {
    int N, cnt = 0;
    scanf("%d", &N);
    while(N != 1) {
        if(N % 2 == 0) N /= 2;
        else N = (3 * N + 1) / 2;
        cnt++;
    }
    printf("%d", cnt);
    return 0;
}

B1011.A + B and C (15 ')

#include <iostream>
using namespace std;
int main() {
    long long N, a, b, c;
    scanf("%d", &N);
    for(int i = 1; i <= N; i++) {
        scanf("%lld%lld%lld", &a, &b, &c);
        if(a + b > c) printf("Case #%d: true\n", i);
        else printf("Case #%d: false\n", i);
    }
    return 0;
}

B1016. Part A + B (15 ')

#include <iostream>
using namespace std;
int main() {
    string s1, s2;
    int a, b, c = 0, d = 0;
    cin >> s1 >> a >> s2 >> b;
    for(int i = 0; i < s1.size(); i++)
        if(s1[i] - '0' == a) c = c * 10 + a;
    for(int i = 0; i < s2.size(); i++)
        if(s2[i] - '0' == b) d = d * 10 + b;
    printf("%d", c + d);
    return 0;
}

B1026. Run time (15 ')

#include <iostream>
using namespace std;
int main() {
    long long a, b, c, sec, min, hour;
    scanf("%lld%lld", &a, &b);
    c = (b - a + 50) / 100;
    sec = c % 60;
    min = c / 60 % 60;
    hour = c / 3600;
    printf("%02lld:%02lld:%02lld", hour, min, sec);
    return 0;
}

B1046. Huaquan (15 ')

#include <iostream>
using namespace std;
int main() {
    int N, a, b, c, d, cnt1 = 0, cnt2 = 0;
    scanf("%d", &N);
    while(N--) {
        scanf("%d%d%d%d", &a, &b, &c, &d);
        if(a + c == b && a + c != d) cnt2++;
        if(a + c != b && a + c == d) cnt1++;
    }
    printf("%d %d", cnt1, cnt2);
    return 0;
}

B1008. Problem Rotate Right array elements (20 ')

#include <iostream>
using namespace std;
int main() {
    int N, M, arr[10000];
    scanf("%d%d", &N, &M);
    for(int i = 0; i < N; i++)
        scanf("%d", &arr[(i + M) % N]);
    for(int i = 0; i < N; i++)
        if(i == 0) printf("%d", arr[i]);
        else printf(" %d", arr[i]);
    return 0;
}

B1012. Classification numbers (20 ')

#include <iostream>
using namespace std;
int main() {
    int N, tmp, A1 = 0, A2 = 0, A3 = 0, A4 = 0, A5 = 0;
    int flag = 1, cnt4 = 0;
    bool b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0;
    scanf("%d", &N);
    while(N--) {
        scanf("%d", &tmp);
        if(tmp % 10 == 0) {
            A1 += tmp;
            b1 = 1;
        }
        if(tmp % 5 == 1) {
            A2 += (flag * tmp);
            flag = -flag;
            b2 = 1;
        }
        if(tmp % 5 == 2) {
            A3++;
            b3 = 1;
        }
        if(tmp % 5 == 3) {
            A4+=tmp;
            cnt4++;
            b4 = 1;
        }
        if(tmp % 5 == 4 && tmp > A5) {
            A5 = tmp;
            b5 = 1;
        }
    }
    if(!b1) printf("N");
    else printf("%d", A1);
    if(!b2) printf(" N");
    else printf(" %d", A2);
    if(!b3) printf(" N");
    else printf(" %d", A3);
    if(!b4) printf(" N");
    else printf(" %.1f", (double)A4 / cnt4);
    if(!b5) printf(" N");
    else printf(" %d", A5);
    return 0;
}

B1018. Scissors hammer (20 ')

#include <iostream>
using namespace std;
char max(int a, int b, int c){
    int max = a;
    max < b? max = b: 0;
    max < c? max = c: 0;
    if(max == c){
        return 'B';
    }else if(max == a){
        return 'C';
    }else{
        return 'J';
    }
}
int main()
{
    int cnt;
    char a, b;
    int jy = 0,jp = 0;//甲胜利和平局
    int jc = 0, jj = 0, jb = 0, yc = 0, yj = 0, yb = 0;
    cin >> cnt;
    for(int i = 0; i < cnt; i++) {
        cin >> a >> b;
        if(a == b) jp++;
        else if((a == 'C' && b == 'J') || (a == 'J' && b == 'B') || (a == 'B'&&b == 'C')) {
            jy++;
            switch(a) {
                case 'C': jc++; break;
                case 'J': jj++; break;
                case 'B': jb++; break;
            }
        }else {
            switch(b) {
                case 'C': yc++; break;
                case 'J': yj++; break;
                case 'B': yb++; break;
            }
        }
    }
    cout << jy << " " << jp << " " << (cnt - jy - jp) << endl;
    cout << (cnt - jy - jp) << " " << jp << " " << jy << endl;
    cout << max(jc, jj, jb) << " " << max(yc, yj, yb);
    system("pause");
    return 0;
}

A1042.Shuffling Machine (20')

#include <iostream>
using namespace std;
int main() {
    int N;
    int change[54];
    string card[] = {
        "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "S12", "S13",
        "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9", "H10", "H11", "H12", "H13",
        "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C10", "C11", "C12", "C13",
        "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9", "D10", "D11", "D12", "D13",
        "J1", "J2"};
    string cp[54];
    scanf("%d", &N);
    for(int i = 0; i < 54; i++)
        scanf("%d", &change[i]);
    while(N--) {
        for(int i = 0; i < 54; i++)
            cp[change[i] - 1] = card[i];
        for(int i = 0; i < 54; i++)
            card[i] = cp[i];
    }
    printf("%s", card[0].data());
    for(int i = 1; i < 54; i++)
        printf(" %s", card[i].data());
    system("pause");
    return 0;
}

A1046.Shortest Distance (20')

(Timeout think greed)

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int N, M, a, b, sum = 0;
    scanf("%d", &N);
    vector<int> dis(N + 1);
    dis[0] = 0;
    for(int i = 1; i <= N; i++) {
        scanf("%d", &dis[i]);
        sum += dis[i];
        dis[i] += dis[i - 1];
    }
    scanf("%d", &M);
    while(M--) {
        scanf("%d%d", &a, &b);
        if(a > b) swap(a, b);
        int len = dis[b - 1] - dis[a - 1];
        printf("%d\n", min(sum - len, len));
    }
    return 0;
}

1065.A+B and C(64bit) (20')

(Think of the problem of large numbers Java)

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        BigInteger A, B, C;
        for(int i = 1; i <= N; i++) {
            A = sc.nextBigInteger();
            B = sc.nextBigInteger();
            C = sc.nextBigInteger();
            if(A.add(B).compareTo(C)>0)
                System.out.printf("Case #%d: true\n", i);
            else
                System.out.printf("Case #%d: false\n", i);
        }
    }
}

B1010. Univariate polynomial derivation

(Polynomial problem thought map)

#include <iostream>
using namespace std;
int main() {
    int a, b, flag = 1;
    int m[10000] = {0};
    while(~scanf("%d%d", &a, &b)) {
        a *= b;
        b--;
        m[b] += a;
    }
    for(int i = 9999; i >= 0; i--) {
        if(m[i] != 0) {
            if(!flag) printf(" ");
            printf("%d %d", m[i], i);
            flag = 0;
        }
    }
    if(flag) printf("0 0");
    return 0;
}

A1002.A+B for Polynomials(25')

(Polynomial problem thought map)

#include <iostream>
#include <map>
using namespace std;
int main()
{
    int M, coef, coun=2;
    double expo;
    map<int, double, greater<int>> m;
    while(coun--){
        cin >> M;
        while(M--){
            cin >> coef >> expo;
            m[coef] += expo;
        }
    }
    for(auto it = m.begin(); it != m.end(); it++)
        if(it -> second == 0) m.erase(it);
    cout << m.size();
    for(auto it: m)
        printf(" %d %.1f", it.first, it.second);
    return 0;
}

A1009.Product of Polynomials(25')

#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{
    int M, N;
    scanf("%d", &M);
    vector<pair<int, double>> poly1(M);
    for(int i = 0; i < M; i++)
        scanf("%d%lf", &poly1[i].first, &poly1[i].second);
    scanf("%d", &N);
    vector<pair<int, double>> poly2(N);
    for(int i = 0; i < N; i++)
        scanf("%d%lf", &poly2[i].first, &poly2[i].second);
    map<int, double, greater<int>> m;
    for(int i = 0; i < poly1.size(); i++)
        for(int j = 0; j < poly2.size(); j++)
            m[poly1[i].first + poly2[j].first] += poly1[i].second * poly2[j].second;
    for(auto it = m.begin(); it != m.end(); it++)
        if(it->second == 0) m.erase(it);
    printf("%d", m.size());
    for(auto it = m.begin(); it != m.end(); it++)
        printf(" %d %.1f", it->first, it->second);
    system("pause");
    return 0;
}

3.2. Finding Elements

B1041. Examination seat number (15 ')

#include <iostream>
#include <map>
using namespace std;
int main() {
    int N, M, tmp_i;
    pair<string, int> tmp_p;
    map<int, pair<string, int>> m;
    scanf("%d", &N);
    for(int i = 0; i < N; i++) {
        cin >> tmp_p.first >> tmp_i >> tmp_p.second;
        m[tmp_i] = tmp_p;
    }
    scanf("%d", &M);
    while(M--) {
        scanf("%d", &tmp_i);
        printf("%s %d\n", m[tmp_i].first.c_str(), m[tmp_i].second);
    }
    return 0;
}

B1004. Standings (20 ')

#include <iostream>
using namespace std;
int main() {
    string x_max, m_max, x_min, m_min;
    string x_tmp, m_tmp;
    int N, s_max = -1, s_min = 1000, s_tmp;
    scanf("%d", &N);
    while(N--) {
        cin >> x_tmp >> m_tmp >> s_tmp;
        if(s_tmp > s_max) {
            s_max = s_tmp;
            x_max = x_tmp;
            m_max = m_tmp;
        }
        if(s_tmp < s_min) {
            s_min = s_tmp;
            x_min = x_tmp;
            m_min = m_tmp;
        }
    }
    printf("%s %s\n%s %s", x_max.data(), m_max.data(), x_min.data(), m_min.data());
    system("pause");
    return 0;
}

B1028. Census

#include <iostream>
using namespace std;
int main() {
    int N, cnt = 0;
    scanf("%d", &N);
    string name_max, name_min, date_max = "", date_min = "9999/99/99";
    string name_tmp, date_tmp;
    while(N--) {
        cin >> name_tmp >> date_tmp;
        if(date_tmp <= "2014/09/06" && date_tmp >= "1814/09/06") {
            if(date_tmp > date_max) {
                date_max = date_tmp;
                name_max = name_tmp;
            }
            if(date_tmp < date_min) {
                date_min = date_tmp;
                name_min = name_tmp;
            }
            cnt++;
        }
    }
    if(cnt == 0) printf("0");
    else printf("%d %s %s", cnt, name_min.data(), name_max.data());
    return 0;
}

B1032. That strong Excavator

#include <iostream>
#include <map>
using namespace std;
int main() {
    map<int, int, greater<int>> m;
    int a, b, N, mk, mv = 0;
    scanf("%d", &N);
    while(N--) {
        scanf("%d%d", &a, &b);
        m[a] += b;
    }
    for(auto x: m) {
        if(x.second > mv) {
            mk = x.first;
            mv = x.second;
        }
    }
    printf("%d %d", mk, mv);
    return 0;
}

A1011.World Cup Betting(20')

#include <iostream>
using namespace std;
int main() {
    double m_num[3];
    double w, t, l, m;
    char m_char[3];
    for(int i = 0; i < 3; i++){
        scanf("%lf%lf%lf", &w, &t, &l);
        m = max(max(w, t), l);
        if(m == w){
            m_char[i] = 'W';
            m_num[i] = m;
        }else if(m == t){
            m_char[i] = 'T';
            m_num[i] = m;
        }else {
            m_char[i] = 'L';
            m_num[i] = m;
        }
    }
    double res = (m_num[0] * m_num[1] * m_num[2] * 0.65 - 1) * 2;
    printf("%c %c %c %.2f", m_char[0], m_char[1], m_char[2], res);
    return 0;
}

A1006.Sign In and Sign Out(25')

#include <iostream>
using namespace std;
int main() {
    int M;
    scanf("%d", &M);
    string maxid, _max="", minid, _min="1111 1111", tmp, start, _end;
    while(M--) {
        cin >> tmp >> start >> _end;
        if(start < _min) {
            _min = start;
            minid = tmp;
        }
        if(_end > _max) {
            _max = _end;
            maxid = tmp;
        }
    }
    cout << minid << " " << maxid;
    return 0;
}

A1036.Boys vs Girls(25')

#include <iostream>
using namespace std;
struct stu {
    string name = "Absent", sex, id;
    int grade;
};
int main() {
    int N;
    scanf("%d", &N);
    stu _max, _min, tmp;
    _max.grade = -1;
    _min.grade = 101;
    while(N--) {
        cin >> tmp.name >> tmp.sex >> tmp.id >> tmp.grade;
        if(tmp.sex == "F" && tmp.grade > _max.grade) _max = tmp;
        if(tmp.sex == "M" && tmp.grade < _min.grade) _min = tmp;
    }
    if(_max.name == "Absent") cout << _max.name << endl;
    else cout << _max.name << " " << _max.id << endl;
    if(_min.name == "Absent") cout << _min.name << endl;
    else cout << _min.name << " " << _min.id << endl;
    if(_max.name == "Absent" || _min.name == "Absent")
        cout << "NA" << endl;
    else cout << _max.grade - _min.grade << endl;
    system("pause");
    return 0;
}

3.3. Graphical output

B1036. Learn programming together with Obama

#include <iostream>
using namespace std;
int main() {
    int N; char c;
    scanf("%d %c", &N, &c);
    for(int i = 0; i < N; i++) putchar(c);
    putchar('\n');
    for(int i = 0; i < (double)N / 2 - 2; i++) {
        putchar(c);
        for(int j = 0; j < N-2; j++) putchar(' ');
        putchar(c);
        putchar('\n');
    }
    for(int i = 0; i < N; i++) putchar(c);
    return 0;
}

B1027. Hourglass print (20 ')

#include <iostream>
using namespace std;
int main() {
    int N, level = 0, cnt = 0, sum; char c;
    scanf("%d %c", &N, &c);
    while(2 * level * level - 1 <= N) level++;
    sum = 2 * (--level) * level -1;
    for(int i = level; i > 0; i--, cnt++){
        for(int j = 0; j < cnt; j++) putchar(' ');
        for(int j = 2 * i - 1; j > 0; j--) putchar(c);
        putchar('\n');
    }
    cnt -= 2;
    for(int i = 2; i <= level; i++, cnt--) {
        for(int j = 0; j < cnt; j++) putchar(' ');
        for(int j = 2 * i - 1; j > 0; j--) putchar(c);
        putchar('\n');
    }
    printf("%d", N - sum);
    system("pause");
    return 0;
}

A1031.Hello World for U (20')

#include <iostream>
using namespace std;
int main() {
    string str;
    getline(cin, str);
    int row, N = str.length(), recol;
    row = (N + 2) / 3 ;
    recol = (N + 2) / 3 + (N + 2) % 3 - 2;
    for(int i = 0; i < row; i++){
        cout << str[i];
        for(int j = 0; j < recol; j++)
            if(i != row - 1) cout << " ";
            else cout << str[j + row];
        cout << str[N - i -1] << endl;
    }
    return 0;
}

3.5. Hex conversion

B1022.D hexadecimal A + B (20 ')

#include <iostream>
#include <stack>
using namespace std;
int main() {
    int A, B, D, sum;
    scanf("%d%d%d", &A, &B, &D);
    sum = A + B;
    if(sum == 0) putchar('0');
    stack<int> s;
    while(sum != 0) {
        s.push(sum % D);
        sum /= D;
    }
    while(!s.empty()) {
        printf("%d", s.top());
        s.pop();
    }
    return 0;
}

B1037. Looking for change at Hogwarts

#include <iostream>
using namespace std;
int main() {
    int ag, as, ak, bg, bs, bk, rg, rs, rk;
    scanf("%d.%d.%d %d.%d.%d", &ag, &as, &ak, &bg, &bs, &bk);
    rg = bg - ag; rs = bs - as; rk = bk -ak;
    if(rg < 0 || (rg == 0 && rs < 0) || (rg == 0 && rs == 0 && rk < 0)) {
        putchar('-');
        rg = -rg;
        rs = -rs;
        rk = -rk;
    }
    while(rk < 0) {
        rs--;
        rk += 29;
    }
    while(rs < 0) {
        rg--;
        rs += 17;
    }
    printf("%d.%d.%d", rg, rs, rk);
    system("pause");
    return 0;
}

A1019.General Polindromic Number(20')

#include <iostream>
#include <deque>
using namespace std;
int main(){
    int N, R;
    cin >> N >> R;
    deque<int> d, dr;
    while(N != 0){
        d.push_back(N % R);
        dr.push_front(N % R);
        N /= R;
    }
    bool right = true;
    for(int i = 0; i < d.size(); i++)
        if(d[i] != dr[i]) right = false;
    cout << (right ? "Yes" : "No") << endl;
    for(int i = 0; i < dr.size(); i++)
        if(i != 0) cout << " " << dr[i];
        else cout << dr[i];
    return 0;
}

A1027.Color in Mars(20')

#include <iostream>
using namespace std;
int main() {
    int a, b, c;
    char ch[] = "0123456789ABC";
    scanf("%d%d%d", &a, &b, &c);
    printf("#%c%c%c%c%c%c", ch[a/13], ch[a%13], ch[b/13], ch[b%13], ch[c/13], ch[c%13]);
    return 0;
}

A1058.A+B in Hogwarts(20')

#include <iostream>
using namespace std;
int main(){
    int a,b,c,d,e,f;
    scanf("%d.%d.%d %d.%d.%d",&a,&b,&c,&d,&e,&f);
    a+=d;b+=e;c+=f;
    b+=c/29;c%=29;
    a+=b/17;b%=17;
    printf("%d.%d.%d",a,b,c);
    return 0;
}

Guess you like

Origin www.cnblogs.com/littlepage/p/12345354.html