poj-1702
来源:互联网 发布:旅行消费数据报告 编辑:程序博客网 时间:2024/05/16 12:04
//384K79MSG++#include <cstdio>#include <cstring>using namespace std;const int MAX = 22;long long weights[MAX];void init() {int res = 1;for (int i = 0; i < MAX; i++) {weights[i] = res;res *= 3;}}int leftPart[21];int rightPart[21];int leftPos;int rightPos;void solve(int val) {int carry = 0;// printf("r %d\n", 20%3);for (int i = 0; i < MAX - 1; i++) {// if (val > 0) {int curWeightDigit = val%3;curWeightDigit += carry;if (curWeightDigit == 1) { // right need a poise// printf("A %d %lld %d\n", i, weights[i+1], carry);rightPart[rightPos++] = weights[i];carry = 0;} else if (curWeightDigit == 2) {leftPart[leftPos++] = weights[i];// printf("B %d %lld %d\n", i, weights[i+1], carry);carry = 1;// } else if (curWeightDigit == 3) {// // carry = 1;// carry = 1;}val /= 3;// } else {// break;// }}if (leftPos == 0) {printf("empty ");} else {for (int i = 0; i < leftPos; i++) {if (i < leftPos - 1) {printf("%d,", leftPart[i]);} else {printf("%d ", leftPart[i]);}}}for (int i = 0; i < rightPos; i++) {if (i < rightPos - 1) {printf("%d,", rightPart[i]);} else {printf("%d\n", rightPart[i]);}}}int caseNum;int main() {init();scanf("%d", &caseNum);for (int i = 1; i <= caseNum; i++) {leftPos = 0;rightPos = 0;int val;scanf("%d", &val);solve(val);}}
进制转换题,3进制的。
思路就是将 转化完以后的3进制数里 数值为2 的位进行 加posie 使得最后的3进制数的数位数值只有1 和 0(因为每种posie只有一个,所以必须是0/1)
0 0
- POJ 1702
- poj 1702
- POJ-1702
- poj-1702
- poj 1702 平衡三进制
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- 印象笔记不明崩溃
- java实现冒泡和选择排序
- LeetCode 6 ZigZag Conversion
- HDU 5000 Clone(鞍山网络赛D题)
- 数据结构与算法问题 欧拉回路
- poj-1702
- CSS3 按钮悬停(Hover)效果全集
- Windows编程基础 第十五章 线程局部存储 线程同步 原子锁 临界区 事件 互斥量 信号量 可等候定时器
- bo2-About Java 多线程---------> java多线程例子
- 在ubuntu安装R
- Linux学习_arch软件安装与配置
- 搭建centos7的server环境
- 怎么上facebook、youtube、twitter? 图文教程。
- Java垃圾回收机制