poj 1702 模拟(用三进制砝码测量物体质量)
2015-01-30 20:21
363 查看
题意:给定20个砝码,重量分别为3^i(i=0~19)。给定一个物品,质量为W(1 <= W <= (3^20-1)/2),放在天平左盘。左右皆可放砝码,如何放能使天平平衡。
思路:将物品的重量转化为三进制,如果某一位为0或者1则不需处理、为2便在此位加上相应的3的幂将2消除,并进位。最终得到的每位都为0或者1的数即为最终天平右端的重量。
思路:将物品的重量转化为三进制,如果某一位为0或者1则不需处理、为2便在此位加上相应的3的幂将2消除,并进位。最终得到的每位都为0或者1的数即为最终天平右端的重量。
#include <stdio.h> #include <string.h> #include <math.h> #define N 25 int n,T; int num ,res ; void print(int s ,int len){ int i,flag = 0; for(i = 0;i<=len;i++){ if(!flag && s[i]){ printf("%d",(int)pow(3,i)); flag = 1; } else if(s[i]) printf(",%d",(int)pow(3,i)); } if(!flag) printf("empty"); } int main(){ scanf("%d",&T); while(T--){ int i,len = 0; memset(num, 0, sizeof(num)); memset(res,0, sizeof(res)); scanf("%d",&n); while(n){ //将输入数字转化为3进制 num[len++] = n%3; n /= 3; } for(i = 0;i<len;i++) if(num[i] >= 2){//出现2(或3) if(num[i] == 2)//此位为2表示在这位上加上一个相应的3的幂 res[i] = 1; num[i] = 0; num[i+1] ++; } print(res,len); printf(" "); print(num,len);//num数组恰为最终天平两端的重量 putchar('\n'); } return 0; }
相关文章推荐
- POJ 1702 解题报告——Eva's Balance:用砝码为物体称重
- 我们用一个等臂天平来称物体的质量,如果我们要称的物体质量范围在1到40克(整数),请问我们最少需要几块砝码可以完成这项物体质量的称量?
- 我们用一个等臂天平来称物体的质量,如果我们要称的物体质量范围在1到40克(整数),请问我们最少需要几块砝码可以完成这项物体质量的称量?
- POJ 1702 Eva's Balance 三进制
- 我们用一个等臂天平来称物体的质量,如果我们要称的物体质量范围在1到40克(整数),请问我们最少需要几块砝码可以完成这项物体质量的称量?
- poj 1702 模拟
- POJ - 3087 Shuffle'm Up(模拟)
- Quaternion将对象的旋转从from平滑插值到to。一般用于模拟相机的观察方向从物体a过渡到物体b的效果
- [ACM] POJ 1068 Parencodings(模拟)
- poj 1028 stack模拟网页
- poj 3735Training little cats(矩阵快速幂 完成模拟 注意优化)
- POJ 3087 Shuffle'm Up 模拟
- poj Pots(BFS)(路径记录)(模拟)
- POJ:1017-Packets(贪心+模拟,神烦)
- POJ 2105 IP Address(简单模拟)
- poj1054 模拟
- POJ 2993Emag eht htiw Em Pleh(模拟)
- POJ-1091:[NOIP模拟](二)T2-跳蚤
- POJ 2632 较复杂的模拟
- poj 1003:Hangover(水题,数学模拟)