题目:

Eva's Balance
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 4211   Accepted: 2022

Description

Eva has a balance with 20 poises. The weights of the poises are 1, 3, 9, 27,...,3^19. Eva asserts that she has a way to measure any object whose weight is an integer from 1 to (3^20-1)/2. Assuming that Eva has placed an object with the weight in this range on the left tray of the balance, your task is to place the proper poises on the proper trays so as to weigh the object out.

Input

The first line is an integer T (1 <= T <= 20), which shows the number of the test cases. Each of the following T lines contains an integer W (1 <= W <= (3^20-1)/2), expressing the weight of an object.

Output

For each test case print a line, showing the weights of the poises on the left tray and the right tray. Use a space to separate the left tray and the right tray. The poises on the same tray are arranged in the increasing order, and a comma separates every two of them. If there is no poise on the tray, output "empty".

Sample Input

3
9
5
20

Sample Output

empty 9
1,3 9
1,9 3,27

心得:

刚开始想转化为背包问题,就是20个正数变成40个整数(后20个为前20个的相反数),这样就变成背包恰好装满的问题,可是后来超时了,,,,最后用了一个进制转换的方法

对称三进制和三进制的比较

1.对称三进制采用-1,0,1作为基本字符,而普通三进制采用0,1,2作为基本字符。

2.对称三进制不需要符号位就能表示负数,而普通三进制需要符号位才能表示负数。

3.对称三进制乘法比较简单,移位、取非、相加就可以完成,便于处理;普通三进制,处理起来比较麻烦。

4.对称三进制在表示自然数的时候,比普通三进制要长

5.对称三进制在表示0.510~110之间的数的时候,整数部分为1,不直观;普通三进制没有这种现象

代码<C语言>

#include<stdio.h>
#include<string.h>
void solve(int n);
int main()
{
    int i,t;
    int n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        solve(n);
    }
    return 0;
}
void solve(int n)
{
    int i,k=n,left[100],right[100],tt;      //k代表数据
    int li=0,ri=0;
    int a[200];
    memset(a,0,sizeof(a));
    i=0;
    //printf("while前\n");
    while(k!=0) //将其转化为三进制数,储存在数组A[i]中
    {
        a[i++]=k%3;
        //printf("a[%d]的值为%d\n",i,a[i]);
        k=k/3;
       // printf("k的值%d\n",k);
    }
    //printf("while后\n");
/*
从低位到高位的顺序开始:
     1:如果当前位为2, 则当前位变为-1(减三), 高一位的系数+1。
     2:如果当前位是3,则当前位变为0(减三), 高一位的系数+1.道理同上。
     3:其他不变。
*/

for(k=0; k<i; k++)
        if(a[k]==3)
        {
            a[k]=0;
            a[k+1]++;
        }
        else if(a[k]==2)
        {
            a[k]=-1;
            a[k+1]++;
        }
    tt=1;

for(k=0; k<=i; k++)
    {
        if(a[k]==-1)
            left[++li]=tt;
        else if(a[k]==1)
            right[++ri]=tt;
        tt*=3;
    }
    if(li==0)
    {
        printf("empty ");
        for(i=1; i<ri; i++)
            printf("%d,",right[i]);
        printf("%d\n",right[ri]);
    }
    else
    {
        for(i=1; i<li; i++)
            printf("%d,",left[i]);
        printf("%d ",left[li]);
        for(i=1; i<ri; i++)
            printf("%d,",right[i]);
        printf("%d\n",right[ri]);
    }
}


Eva's Balance相关推荐

  1. 转载[POJ题型分类]

    北大ACM题分类 主流算法: 1.搜索 //回溯 2.DP(动态规划) 3.贪心 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同等安置矩形的 ...

  2. ACM 网址和一些建议

    USACO http://ace.delos.com/usacogate 美国著名在线题库,专门为信息学竞赛选手准备 TJU http://acm.tongji.edu.cn/ 同济大学在线题库,唯一 ...

  3. 【poj题集整理】【存下来并不会看】

    主要是整理起来自己用的.网上有多个版本. 初级: 一.基本算法:      (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)   ...

  4. (精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目

    POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: ...

  5. 初学ACM之路(训练大纲)

    初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj329 ...

  6. ACM大量习题题库及建议培养计划

    ACM大量习题题库 ACM大量习题题库  现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO h ...

  7. ACM题目和培养训练!!!

    ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO ht ...

  8. POJ刷题列表——正在进行

    转载自:http://blog.csdn.net/pyub153/article/details/50480333 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心 ...

  9. ACM训练史上最详细计划(大神养成记)

    看完人家的博客,发现任重道远... 一位高手对我的建议: 一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的 ,主要时间是花在思考算法上,不是花在写程序与debu ...

最新文章

  1. 计算机网站编辑需要学什么,网站编辑工作的心得体会
  2. Excel VBA附合导线平差自动计算表
  3. WSE 3.0 文档翻译:安装WSE3.0
  4. Tomcat开启SSL协议支持
  5. Android移动开发之【Android实战项目】DAY5-MPAndroidChart可滑动折线图
  6. 封装一个jquery库
  7. HDU 2242 考研路茫茫——空调教室
  8. Oracle经典面试题,你都掌握了吗?
  9. PreparedStatement JDBC域处理/SQl攻击
  10. Codeforces Round #321 (Div. 2) B. Kefa and Company 二分
  11. percona 5.7.11root初始密码设置
  12. laravel 配置邮件发件人_Jenkins中配置自动化测试项目
  13. 计算机网络实验一总结(基于packet tracer)
  14. NPN PNP 接近开关
  15. 三行CSS代码搞定镜头平移(Panning Shot)动画
  16. 【转】光通信主要会议和期刊总结
  17. css一些特殊的图形,CSS 绘制特殊图形
  18. JS - 获取选中复选框的值(checkBox)
  19. 【计算机图形学】c++ OpenGL Sutherlang-Hodgman 多边形裁剪
  20. EclipsePDT svn 切换用户

热门文章

  1. 照片变漫画头像如何操作?照片变漫画头像制作方法推荐
  2. 会议室预约小程序毕业设计毕设作品开题报告答辩PPT
  3. mulesoft MCIA 易错题汇总解析
  4. Spring Boot 实践折腾记(20):Thymleaf + webjar + ECharts 构建本地图表
  5. C++ Primer Plus(第六版)第十章课后习题
  6. 方差、标准差、均方差等各种差
  7. php获取CSV后缀文件中的内容,并把某一列的数据重写到txt文件中
  8. Nacos服务名ip地址改为域名
  9. 前端小白学React系列之——浅仿一下炒股软件(雪球)
  10. R语言:结构方程模型sem、潜变量分析