zoukankan      html  css  js  c++  java
  • uva 128 Software CRC

    数学题(模运算)

    题意:详细的翻译http://www.cnblogs.com/devymex/archive/2010/08/28/1810480.html

    简单的题意:给你一个字符串(可能有空格,最多1024字符),每个字符代表一个数字,因为最多有256个字符,所以这个字符串其实是表示一个256进制的数字。但这还没完,在这个256进制数字要再加两位,组成一个新的256进制数字,这个数字要能被g=34943(这是个十进制数字)整除,要你输出新添加的那两个数字是什么,这两个数字要以16进制的形式输出,用空格隔开

    思路:把原来的256进制数字先转为十进制数x,那么再添加两位后,其实原本的数字翻了2倍,即翻了 *256*256=65536,所以x=x*65536。把新添加的两位数转化为十进制y

    那么新的数字其实是x+y,我们的目的就是(x+y)%g=0;  根据模运算的性质可转化为 (x+y)%g=(x%g+y%g)%g=0; 我们要知道的是y,y=(g-x%g)%g,再把y转为16进制即可

    #include <cstdio>
    #include <cstring>
    #define N 1030
    #define g 34943
    char num[N],*c="0123456789ABCDEF";
    
    int main()
    {
        while(gets(num) && num[0]!='#')
        {
            long long t=0,ans;
            for(int i=0; num[i]; i++)
                t=(t*256+num[i])%g;
            t=(((t*256+0)%g)*256+0)%g;
            //可以一步写为
            //t=(t*65536)%g;
            ans=(g-t)%g;
            int a[5];
            for(int i=0; i<4; i++)
            {
                a[i]=ans%16;
                ans/=16;
            }
            printf("%c%c %c%c\n",c[a[3]],c[a[2]],c[a[1]],c[a[0]]);
        }
        return 0;
    }
  • 相关阅读:
    7.29 H5学习笔记
    8.1H5学习笔记
    8.4 H5知识点总结
    8.15 CSS知识点6
    8.12 CSS知识点5
    HTTP协议简析(二)
    php实现二分查找法
    http协议简析(一)
    telnet客户端模拟浏览器发送请求
    导入txt文件到SQL SERVER 2008
  • 原文地址:https://www.cnblogs.com/scau20110726/p/2867984.html
Copyright © 2011-2022 走看看