POJ1002

    xiaoxiao2021-03-25  101

    POJ1002 – 真·水题(个鬼)

    这里吐槽一下POJ的g++,同一段代码用c++能过g++过不了

    然后再吐槽一下这一题的那个No duplicates.,也不清楚到底要不要给句号(事实证明要)

    然后数据里面竟然会有0开头的。。。这个wa的我一脸懵逼,最后网上找到了测试数据才发现错在哪里

    注:d这个制表符可以右对齐然后自动补零

    这题我用数组排序做的,用map做也可以,不过弱还不会用map,然后由于数比较小最大只有10000000,因此也可以开大一点的数组直接存不用排序

    贴一下代码

    #include <iostream> #include <string> #include <cstdio> #include <vector> #include <algorithm> using namespace std; vector <int> telephone; string s; void handle(string s); bool comparison(int a, int b); void output(); void input(); int main() { input(); sort(telephone.begin(), telephone.end(), comparison); output(); return 0; } bool comparison(int a, int b) { return (a < b); } void output() { int t = 1; bool h = 0; telephone.push_back(-1); for (int i = 1; i < telephone.size(); i++) { if (telephone[i] == telephone[i - 1]) t++; else { if (t > 1) { printf("d-d %d\n", telephone[i - 1] / 10000, telephone[i - 1] % 10000, t); t = 1; h = 1; } } } if (!h) cout << "No duplicates." << endl; telephone.pop_back(); } void input() { int n; cin >> n; for (int i = 0; i < n; i++) { cin >> s; handle(s); } } void handle(string s) { int t = 0; char c; for (int i = 0; i < s.size(); i++) { c = s[i]; if (c == '-') ; else if (c >= '0' && c <= '9') t = t * 10 + c - '0'; else if (c >= 'A' && c < 'Q') t = t * 10 + (c - 'A') / 3 + 2; else if (c > 'Q' && c < 'Z') t = t * 10 + (c - 'A' - 1) / 3 + 2; } telephone.push_back(t); }
    转载请注明原文地址: https://ju.6miu.com/read-12389.html

    最新回复(0)