uva712_S树
2015-07-24 21:19
309 查看
///////////////////////////////////////////////////////////////////////////////////////////////////////
作者:tt2767
声明:本文遵循以下协议自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0
查看本文更新与讨论请点击:http://blog.csdn.net/tt2767
链接被删请百度: CSDN tt2767
///////////////////////////////////////////////////////////////////////////////////////////////////////
题解:
把查询的值看成二进制,转换成十进制之后去叶子里面找对应的值输出即可
作者:tt2767
声明:本文遵循以下协议自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0
查看本文更新与讨论请点击:http://blog.csdn.net/tt2767
链接被删请百度: CSDN tt2767
///////////////////////////////////////////////////////////////////////////////////////////////////////
题解:
把查询的值看成二进制,转换成十进制之后去叶子里面找对应的值输出即可
#include<cstdio> #include<cstring> #include<iostream> const int N = 100009; int change(char * s); //pow调用库中的也可,由于可能存在的精度问题,重写了一下 int pow(int x, int y); void rev(char * x); int main() { int n, m, tot = 1; while(scanf("%d", &n) == 1 && n) { getchar(); int p = 0 ; char s , ans , x ; gets(s); gets(s); scanf("%d", &m); getchar(); while(m--) { gets(x); ans[p++] = s[change(x)]; } ans[p] = '\0'; printf("S-Tree #%d:\n", tot++); puts(ans); puts(""); } return 0; } int change(char * s) { rev(s); int l = strlen(s); int ans = 0, p = 0; for(int i = 0 ; i < l ; i++) ans+= (s[i]-'0') * pow(2,i); return ans; } int pow(int x, int y) { int ans = 1; while(y--) { ans *= x; } return ans; } void rev(char * x) { int right = strlen(x)-1; int left = 0; char temp; while(left < right) { temp = x[left]; x[left++] = x[right]; x[right--] = temp; } }
相关文章推荐
- 2015 HUAS Summer Training#2 G
- System Generator学习笔记(四)
- hdu 题目分类
- HDU oj Encodeing
- POJ 3273 Monthly Expense(二分)
- 谷歌十戒
- 今天被问到一些PHP的基础问题一下子被问住了。。唉,人老了很多基础都忘了
- ftp服务
- 南阳 oj 语言入门 The Famous Clock
- NSString、NSData、Byte、int相互转换
- LeetCode#27 Remove Element
- 详解Python中函数参数
- 南阳 oj 语言入门 cigarettes
- [转载]大型网站架构演变过程
- JavaScript 中的json
- 素数求和问题
- Java学习篇------Java文本框
- HDOJ-1002 A + B Problem II C语言
- [转载]大型网站架构演变和知识体系
- Openssl s_time命令