Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
三进制..#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <math.h> #include <time.h> #include <set> #include <map> #include <stack> #include <queue> #include <string> #include <bitset> #include <vector> #include <deque> #include <utility> #include <list> #include <sstream> #include <iostream> #include <functional> #include <numeric> #include <algorithm> #include <iomanip> using namespace std; typedef unsigned __int64 u64; template<class T>inline string toStr(const T& v){ostringstream os;os<<v;return os.str();} #define FOR(i,s,e) for (int (i) = (s); (i) < (e); i++) #define DEBUG(a) printf("%s = %s\n", #a, toStr(a).c_str()) int po(int a, int b) { if (b == 1) return a; if (b == 0) return 1; int k = po(a,b/2); if (b % 2 == 0) return k * k ; else return k * k * a; } int changExquisite(int a[],u64 n, int m) { int i = 0; while (n > 0) { a[i++] = n % m; n = n / m; } return i; } int main () { u64 n; int a[1000]; int b[1000]; int c[1000]; int t; cin >> t; while ( t--) { scanf("%I64d",&n); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); int bit_n = changExquisite(a,n,3); int sum = 0; FOR(i,0,bit_n) { if (a[i] >= 3) { a[i+1]++; a[i] = a[i] % 3; } if (a[i] != 0) { if (a[i] != 1) { b[i] = 3 - a[i]; a[i] = 0; a[i+1]++; } } } sum = 0; FOR(i,0,bit_n+1) if (0 != b[i]) sum++; if (sum == 0) printf("empty "); else FOR(i,0,bit_n) if (0 != b[i]) { printf("%d",b[i] * po(3,i)); sum--; if (0 != sum) printf(","); else printf(" "); } sum = 0; FOR(i,0,bit_n+1) if (0 != a[i]) sum++; FOR(i,0,bit_n+1) if (0 != a[i]) { printf("%d", po(3,i) ); sum--; if (0 != sum) printf(","); } printf("\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator