uva 128 - Software CRC(进制转换)
来源:互联网 发布:没有动力 知乎 编辑:程序博客网 时间:2024/05/07 14:56
题目链接:uva 128 - Software CRC
题目大意:给出一个字符串,表示一个256进制的数(因为char类型表示的字符范围),现在要再这个256进制的数后面加两位数值,使得新的数可以被十进制数g = 34943整除,输出添加两位数的16进制。
解题思路:在原先的数的基础上加两位,比如加的两位数为x, 原先的数为y,那么新组成的数就为(y * 256 * 256 + x),而这个数要被g整除。所以我的做法是将num(256进制数)转换成10进制的num数,并且在转化的同时用num去对g进行求mod操作,剩下的余数t ,t * 256 *256就可以代表y* 256 * 256,然后用t对g做mod操作,就可以知道y需要再加上多少可以被整除。
#include <stdio.h>#include <string.h>const int N = 1030;const int g = 34943;const int tmp = 256;int main() {char num[N], c[] = "0123456789ABCDEF";int sign[4];while (gets(num) && num[0] != '#') {long long ans, t = 0;for (int i = 0; num[i]; i++)t = (t * tmp + num[i]) % g;t = (t * tmp * tmp) % g;ans = (g - t) % g;for (int i = 0; i < 4; i++) {sign[i] = ans % 16;ans = ans / 16;}printf("%c%c %c%c\n", c[sign[3]], c[sign[2]], c[sign[1]], c[sign[0]]);}return 0;}
- UVa 128 Software CRC / 进制转换
- uva 128 - Software CRC(进制转换)
- uva 128 Software CRC(进制转换)
- uva 128 - Software CRC
- UVa 128 - Software CRC
- UVa 128 - Software CRC
- UVA - 128 Software CRC
- UVA 128 - Software CRC
- UVa 128 - Software CRC
- UVA - 128 Software CRC
- uva 128 Software CRC
- UVA 128 Software CRC(数论 进制转化)
- UVa 128 Software CRC(模运算)
- UVa 128 Software CRC 数论(模运算)
- Software CRC - UVa 128 取模
- UVA - 128 Software CRC 256进制
- UVa 128 Software CRC (模计算&CRC循环冗余校验码)
- UVA 128 - Software CRC (模运算+循环冗余校验码)
- CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount)
- java与oracle type间传递数据
- 理解RESTful架构
- linux(debian)下的vim diff时 报错E97解决,文件夹对比meld,beyond compare
- f(x) = sin(2x) x∈(-π,π) 源代码
- uva 128 - Software CRC(进制转换)
- PHP高效率写法(详解原因)
- NYOJ练习题 又见Alice and Bob
- c++ 指针
- 最长连续回文串(Longest Palindromic Substring)
- 生日蛋糕
- Oracle所有错误类型
- Cisio Packet_Tracer Resource collection
- xcode5升级证书问题