poj 1702 平衡三进制
2015-07-24 21:41
239 查看
思路:
平衡三进制。
先将n转换为3进制,再转化为平衡3进制,-1项全部移到右面,左右面分别输出。
平衡三进制具体转化方法
先转化为用0,1,2表示的3进制,然后通过“借位”转换
若对应的系数为2,则变为-1,下一位+1
若对应的系数为3,则变为0,下一位+1
为0或1时不变
平衡三进制。
先将n转换为3进制,再转化为平衡3进制,-1项全部移到右面,左右面分别输出。
平衡三进制具体转化方法
先转化为用0,1,2表示的3进制,然后通过“借位”转换
若对应的系数为2,则变为-1,下一位+1
若对应的系数为3,则变为0,下一位+1
为0或1时不变
#include <iostream> #include <string> #include <vector> #include <set> #include <map> #include <queue> #include <algorithm> #include <fstream> #include <cmath> #include <cstring> #include <limits.h> #define Long long long #define uint unsigned int #define N #define mod 1000000007 #define inf 100000000 #define eps 1e-10 #define For(i,l,r) for(int i=l;i<=r;i++) #define Dor(i,r,l) for(int i=r;i>=l;i--) using namespace std; ifstream in("/Users/urey/data/input.txt"); //_________________________________________________________________________________ //eg: 20 (10进制)-> 202 (3进制)-> 1,-1,1,-1 (平衡3进制) int main(int argc, const char * argv[]) { int n, weight; int poses[20]; int j = 1;//3^0 for(int i = 0; i < 20; ++i) { poses[i] = j; j *= 3; } int tribit[21]; cin>>n; for(int i = 0; i < n; ++i) { cin>>weight; //转换为三进制 memset(tribit, 0, sizeof(tribit)); for(int j = 19; j >= 0; --j) { tribit[j] = weight/poses[j]; weight %= poses[j]; } // cout<<"3进制"<<endl; // for(int j = 20; j >= 0; --j) { // cout<<tribit[j]; // } int count = 0; //转化为平衡三进制 for(int j = 0; j <= 19; ++j) { if(tribit[j] == 2) { tribit[j] = -1; ++count; tribit[j+1] += 1; }else if(tribit[j] == 3) { tribit[j] = 0; tribit[j+1] += 1; } } // cout<<endl; // cout<<"平衡3进制"<<endl; // for(int j = 20; j >= 0; --j) { // cout<<tribit[j]; // } // cout<<endl; //输出左半部分 if(count) { int j = 0; while(tribit[j] != -1) { ++j; } cout<<poses[j]; for(++j; j < 21; ++j) { if(tribit[j] == -1) { cout<<","<<poses[j]; } } }else { cout<<"empty"; } cout<<" "; //输出右半部分 int j = 0; while(tribit[j] != 1) { ++j; } cout<<poses[j]; for(++j; j < 21; ++j) { if(tribit[j] == 1) { cout<<","<<poses[j]; } } cout<<endl; } return 0; }
相关文章推荐
- dd sKip 和 seek参数理解
- HD 2005 第几天?
- Humble Numbers
- mark
- Clear All of Them I(HDU 3920状压dp)
- hdu 1864 最大报销额 dp
- org.springframework.web.util.NestedServletException:
- Matlab 高斯分布 均匀分布 以及其他分布 的随机数
- LeetCode Binary Tree Preorder Traversal 先根遍历
- 7_24_heml_美食网设计_3_完整稿
- [LeetCode]Reverse Words in a String
- PAT (Basic Level) Practise (中文)1033. 旧键盘打字(20) C语言
- HDOJ-2091 空心三角形 C语言
- PHP CURL CURLOPT参数说明(curl_setopt)
- JavaScript入门篇 第三天(认识DOM)
- 《ASP.NET》数据绑定——GridView
- Spark 调优
- [C Language]一个c回调函数的例子
- 字节流InputStream和OutputStream简单使用
- 杭电2005 第几天 函数形式