ZOJ-2759

来源:互联网 发布:阿里推荐算法负责人 编辑:程序博客网 时间:2024/04/30 15:18

转化为3进制表示的问题

#include<cstdio>#include<string>#include<vector>using namespace std;namespace{vector<int> power;void init(){int n = 1;while (n <= 500000000){power.push_back(n);n *= 3;}}string to_3_base(int n){string s;while (n){s += (n % 3 + '0');n /= 3;}return s;}string sum(string s){string res;int prev = 0;bool first = true;for (size_t i = 0; i != s.size(); i++){if (s[i] + prev == '2'){if (first){first = false;printf("%d", power[i]);}elseprintf(" %d", power[i]);prev = 1;res += '0';}else if (s[i] + prev == '3'){prev = 1;res += '0';}else{res += (s[i] + prev);prev = 0;}}if (prev)res += '1';puts(first ? "-1" : "");return res;}}int main(){init();int m;while (scanf("%d", &m) != EOF){string s = sum(to_3_base(m));bool first = true;for (size_t i = 0; i != s.size(); i++)if (s[i] == '1'){if (first){first = false;printf("%d", power[i]);}elseprintf(" %d", power[i]);}puts("\n");}return 0;}


0 0
原创粉丝点击