Sicily 1028. Hanoi Tower Sequence

来源:互联网 发布:网络舆论是什么意思 编辑:程序博客网 时间:2024/05/22 03:50

开始看的时候比较懵

后来还是从数字中看出了端倪:

原为奇数的一定是1,除以2是奇数的一定是2,除以4是奇数的一定是3,除以8是奇数的一定是4。

以此类推,除以2^n次方是奇数的一定是n+1.

还有高精度除法

如此.


// Problem#: 1028// Author: Reid Chan#include <iostream>#include <string>using namespace std;void caculate(int &result, string p){    result = 0;    int len;    int ten;    int mod;    while (true) {        ten = 0;        mod = 0;        len = p.length();        for (int i = 0; i < len; ++i) {            ten = mod * 10 + p[i] - '0';            mod = ten % 2;            ten /= 2;            p[i] = ten + '0';        }        if (mod == 0) {            result++;        } else {            break;        }        if (p[0] == '0') {            p = p.substr(1, len - 1);        }    }}int main() {    int cases;    int result;    string p;    cin >> cases;    int count = 0;    while (count++ < cases) {        cin >> p;        if (p == "1" || p == "2") {            cout << "Case " << count << ": " << p << endl << endl;            continue;        }        caculate(result, p);        if (count == cases) {            cout << "Case " << count << ": " << ++result << endl;        } else {            cout << "Case " << count << ": " << ++result << endl << endl;        }    }    return 0;}                                 






0 0
原创粉丝点击