Hatena::Grouptopcoder

TopCoderの問題を解く

解いた問題の一覧表

2010-01-30

TeXLeX

| 22:45

問題文, SRM 178

'^' のみが特別な入力である入力文字列のASCII値を返せ、という問題。この '^' をどのように処理するかが問題の肝。

この問題を解くには適宜文字列を変換ルールにしたがって1文字目から変換していく必要がある。基本的には変換ルールのとおりに機能を実装すればいい。注意する点としてはルール1を適用すると、値がchar型ではオーバーフローする場合があるので、それ対応する必要がある(僕は気づけなかったために、システムテストで落とされた。

238.78/600 (1 failed)

class TeXLeX {
public:
    vector <int> getTokens(string input) {
        vector <int> result;
        const int len = input.length();
        for (int i = 0; i < len; i++) {
            if (input[i] == '^') {
                if (i >= len-2) {
                    result.push_back('^');
                } else if (input[i+1] != '^') {
                    result.push_back('^');
                } else if (i < len-3 && isHex(input[i+2]) && isHex(input[i+3])) {
                    unsigned int c;
                    sscanf(input.substr(i+2,2).c_str(), "%x", &c);
                    if (c >= 128) {
                        result.push_back(c);
                        i += 3;
                    } else {
                        input[i+3] = (char) c;
                        i += 2;
                    }
                } else if (input[i+2] > 63) {
                    input[i+2] -= 64;
                    i += 1;
                } else {
                    input[i+2] += 64;
                    i += 1;
                }
            } else {
                result.push_back(input[i]);
            }
        }
        return result;
    }
private:
    bool isHex(const char c) {
        return ('0'<=c && c<='9') || ('a'<=c && c<='f');
    }
};

CamiCami2011/08/31 01:54Hey hey hey, take a gaednr at what' you've done

ifhwgxmyifhwgxmy2011/09/01 01:26IyxF2c <a href="http://zzvvdkadzyzw.com/">zzvvdkadzyzw</a>

vsyaesivsyaesi2011/09/03 20:20bbeGDx <a href="http://xqcimzgfyxjv.com/">xqcimzgfyxjv</a>

2010-01-29

SimpleCalculator

| 19:13

久しぶりに解いた。最近解いてなかったのは英語力の強化を重視していて、英語力が充分ついてから解くのを再開しようかと思っていたから。しかし、思ったよりも時間がかかりそうで(頑張っても1年はかかる)、問題を解く感覚が鈍りそうなので、1日1時間程度をアルゴリズム系の問題を解く時間かそのための勉強に当てようと思います。1時間だと難しめの問題を解くのは時間的に厳しいので、解く問題はDiv2のLevel-1,2とDiv1のLevel-1の問題を中心にします。

問題文, SRM 178

四則演算だけのシンプルな計算機。今度からはしっかり解説を付けたいなと思ったのに、何も語ることがない。この問題はどのように入力値を文字列から得るかだと思うが、それも istringstream か sscanf を使えば実現できるので、やはり語ることがない。

248.39/250

class SimpleCalculator {
public:
    int calculate(string input) {
        int a, b;
        char c;
        istringstream(input) >> a >> c >> b;
        if (c == '+') return a + b;
        else if (c == '-') return a - b;
        else if (c == '*') return a * b;
        else return a / b;
    }
};

MaheshMahesh2012/11/14 15:48Furrealz? That's marovelusly good to know.

mrmqezkqxwmrmqezkqxw2012/11/15 11:52s6bK06 <a href="http://gcchvukbnzox.com/">gcchvukbnzox</a>

spsrxxspsrxx2012/11/16 10:14TvaJTu , [url=http://eciyaqdchfxo.com/]eciyaqdchfxo[/url], [link=http://ttwirdzyever.com/]ttwirdzyever[/link], http://mnxmkjngbida.com/

lewoklxfgxlewoklxfgx2012/11/17 00:38yuecsC <a href="http://lqhnazvgbvem.com/">lqhnazvgbvem</a>

gflffsgflffs2012/11/17 10:45N1Z2Z1 , [url=http://vngcyqvvvmgl.com/]vngcyqvvvmgl[/url], [link=http://dkarqzmcxylp.com/]dkarqzmcxylp[/link], http://zzwhaounqels.com/