UVa 10019 Funny Encryption Method (water ver.)
2013-10-19 12:58
986 查看
10019 - Funny Encryption Method
Time limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=960
The Problem
History :A student from ITESM Campus Monterrey plays with a new encryption method for numbers. These method consist of the following steps:
Steps : Example
1) Read the number N to encrypt M = 265
2) Interpret N as a decimal number X1= 265 (decimal)
3) Convert the decimal interpretation of N to its binary representation X1= 100001001 (binary)
4) Let b1 be equal to the number of 1’s in this binary representation B1= 3
5) Interpret N as a Hexadecimal number X2 = 265 (hexadecimal)
6) Convert the hexadecimal interpretation of N to its binary representation X2 = 1001100101
7) Let b2 be equal to the number of 1’s in the last binary representation B2 = 5
8) The encryption is the result of M xor (b1*b2) M xor (3*5) = 262
This student failed Computational Organization, that’s why this student asked the judges of ITESM Campus Monterrey internal ACM programming Contest to ask for the numbers of 1’s bits of this two representations so that
he can continue playing.
Task :
You have to write a program that read a Number and give as output the number b1 and b2
The Input
The first line will contain a number N which is the number of cases that you have to process. Each of the following N Lines ( 0<N<=1000) will contain the number M (0<M<=9999, in decimal representation) which isthe number the student wants to encrypt.
The Output
You will have to output N lines, each containing the number b1 and b2 in that order, separated by one space corresponding to that lines number to cryptSample Input
3265
111
1234
Sample Output
3 56 3
5 5
完整代码:
/*0.016s*/ #include<cstdio> inline int bitnum(int num) { int count = 0; while (num) { if (num & 1) ++count; num >>= 1; } return count; } int main() { int t, m, b1, b2; scanf("%d", &t); while (t--) { scanf("%d", &m); b1 = bitnum(m), b2 = 0; while (m) { b2 += bitnum(m % 10); m /= 10; } printf("%d %d\n", b1, b2); } return 0; }
相关文章推荐
- 简单链表
- C语言的编译过程
- 路由器下再连接路由器
- 数据文件的DIO
- ubuntu symfony2
- TCP关闭连接(四次挥手)
- linux中批量替换文本中字符串
- windows8.1 打不开网页 除ie外打不开网页 firefox chrome 打不开网页解决方法
- 如果C++程序要调用已经被编译后的C函数,需要extern “C”
- 研究 android apk安装卸载等 产生的 系统广播
- c++重载操作符研究之 operator ->()
- J2EE中的JSP
- linux多线程
- HibernateTemplate实现分页
- 【MZ】hdu 2243 AC自动机 + 矩阵加速
- 闲的没事用C写的哥德巴赫猜想(有不当之处,还请指点下)
- kindEditor文件上传
- tcpdump使用9个实例
- [历年IT笔试题]2014暴风影音校园招聘笔试题
- RMAN恢复