zoukankan      html  css  js  c++  java
  • [解题报告]10019 Funny Encryption Method

    Funny Encryption Method

    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 is the 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 crypt

    Sample Input

    3
    265
    111
    1234

    Sample Output

    3 5 
    6 3 
    5 5

    C语言的数制转换还真是不方便啊。。。

    #include<stdio.h>
    int main()
    {
        int cas;
        int i,j,n,n1;
        scanf("%d",&cas);
        while (cas--)
        {
            scanf("%d",&n);
            int b1=0;
            for(i=n;i;i/=2) b1+=i%2;
            int n1=0;
            for (i=n,j=0;i;i/=10,j++) n1+=(i%10)*(int)pow(16,(double)j);
            int b2=0;
            for (i=n1;i;i/=2) b2+=i%2;
            printf("%d %d\n",b1,b2);
        }
        return 0;
    }
  • 相关阅读:
    17款加速效率的CSS工具
    我为什么向后端工程师推荐Node.js
    八款开源 Android 游戏引擎 (巨好的资源)
    50个必备的实用jQuery代码段
    $.getJSON()跨域请求
    javascript獲得服務器端控件的ID
    (转)8款在线CSS优化工具/组织和压缩CSS
    10 个文件和文档的比较工具
    40个有创意的jQuery图片和内容滑动及弹出插件收藏集之四
    MBP换硬盘的过程
  • 原文地址:https://www.cnblogs.com/TheLaughingMan/p/2927388.html
Copyright © 2011-2022 走看看