取模性质&进制转换
来源:互联网 发布:小米路由器 数据分析 编辑:程序博客网 时间:2024/05/16 17:04
在上个周的课余学习中我遇到了如下问题:
1.对于斐波那契数列的第K个数取关于10007的模(第K个数很大超出整型表示范围)。
解决方案:通常我们的思路是先求出斐波那契数列的第K个数,然后再对10007取余,但是这种方法会先得到一个无法用整型存储的“大数”,
在这里我们利用了取模运算的性质:(a + b)%c = (a%c + b%c) %c,这样的话在求斐波那契数列数列的过程中就对每一个元素取模,这样我们得到的
中间的数和最后的结果都不会超过10007,
for (int i = 3; i <= n; ++i){ans = (temp_a + temp_b) % 10007;temp_a = temp_b;temp_b = ans;}
2.进制转换的问题:
10 to B:辗转相除法,循环对十进制执行对B取余、除B,直到十进制数等于0,下面的例子是10 to 16.
#include <cstdio>#define Max 20int main(int argc, char const *argv[]){int num,tmp;char array[Max];for (int i = 0; i < Max; ++i){array[i] = '\0';}int count = 0;scanf("%d", &num);if (num == 0){printf("0\n");}while(num != 0){tmp = num % 16;if (tmp >= 0 && tmp <= 9){array[count++] = tmp + 48;}else{array[count++] = tmp + 55;}num = num / 16; // printf("%c\n", array[count - 1]);}// printf("%d\n", count);// count = 0;for (int k = count-1; k >= 0; --k){printf("%c", array[k]);}printf("\n");return 0;}B to 10: 第n位上的数乘Base的(n-1)次幂然后求和,可以用字符数组来存储B,这样方便计算,下面的例子是16 to 10。
#include <stdio.h>#include <cmath>#define Max 20int main(int argc, char const *argv[]){char array[Max];scanf("%s",array);// printf("%d\n", array[0]);unsigned sum = 0;int length = 0;while(array[length] != '\0'){length++;}// printf("%d\n", length);for (int i = 0; array[i] != '\0'; ++i){// printf("%d\n", (int)pow(2,i));if (array[i] >= 48 && array[i] <= 57){sum += (int)pow(16,length-1)*(array[i] - 48);length--; }else{sum += (int)pow(16,length-1)*(array[i] - 55);length--; }}printf("%u\n", sum);return 0;}二进制 到 十六进制的转换可以根据8421码,每四位二进制数表示一位十六进制数,最后不够四位高位补零。同理十六进制转换为二进制就是上面的逆过程。
二进制到八进制的转换就是:每三位二进制数转换为一位八进制数,421.
最后要注意字符数组的使用,可以很方便的存贮每一位的数据。
0 0
- 取模性质&进制转换
- 取模运算的性质
- 取模运算的性质
- 取模运算的性质
- 取模性质-个人赛
- 数学基础-取模性质
- 取模定义及性质
- 二分求幂,取模性质
- 数学基础-取模性质模板
- POJ 2551 简单数学(取模的性质)
- 取模运算的性质&运算符小讲
- POJ 1152 An Easy Problem! (取模运算性质)
- hdu5875(取模的性质,线段树,二分)
- 取整函数及其性质
- 取整函数的性质
- 2017.11.7机房小测-K进制分解应用/模型转换-矩形并/题目性质-IOI2015原题简化
- 数学与编程——求余、取模运算及其性质
- 算法 大数计算:加减乘除,模,阶乘,进制转换(大数除法取余)
- 改变
- 处女贴
- oracle llinux 6.4 install oracle 11g
- Android 屏幕适配
- 通过nginx搭建hls流媒体服务器
- 取模性质&进制转换
- 第一次ios培训
- MySQL系列:innodb源码分析之文件IO
- CUDA学习日志:线程协作与例程
- mac终端push代码库到github
- 简单的读取 存储联系人的DEMO~
- 51编程问题集
- Direct3D的Adapter显卡性能检测类
- 基于高速标注的连通图操作1401:提取最大连通域、去除小面积区域