摘要: 给出a,b 求a和b最大公约数 a是由b的倍数+余数1得到的 辗转相除法 b是由前面的余数1的倍数+余数2得到的 以此类推 直到 余数n为0,余数n-1就是最大公倍数 a = b * 倍数 + p1; b = p1 * 倍数 + p2; p1 = p2 * 倍数 + p3; …… pn-1=pn * 阅读全文
posted @ 2018-11-23 00:08 yanhua-tj 阅读(91) 评论(0) 推荐(0)
摘要: 快速幂 和快速乘差不多 也是a,b两个数,ab 对mod求余 ab 可能超出范围 所以要把b转成二进制,分成几次运算 例:a=11,b=11; b=11,二进制1011 a ^ (1 * 23 + 0 * 22 + 1 * 21 + 1 * 20) = a8+2+1=a11 下面是代码 #inclu 阅读全文
posted @ 2018-11-22 23:52 yanhua-tj 阅读(48) 评论(0) 推荐(0)
摘要: 快速乘 两个大数a,b(可能会超定义的类型的范围)相乘对mod求余 显然直接乘是不可能的 所以我们把b转成二进制 例 a=11,b=11 b的二进制是1011 所以a*b=a * (1 * 23 +0 * 22 + 1 * 21+1 * 20)=a * (8+2+1)=121; 下面是代码 #inc 阅读全文
posted @ 2018-11-22 23:41 yanhua-tj 阅读(69) 评论(0) 推荐(0)
摘要: 文章目录 位运算~取反符号<<,>> 左移,右移符号& 位与运算符| 位或运算符^ 异或运算符 位运算 ~取反符号 十进制2 -->10 (B) ~10=01 十进制 1 <<,>> 左移,右移符号 <<是左移符号 例 4<<1就是100左移一位变成1000得到8 >>是右移符号 例 4>>1就是1 阅读全文
posted @ 2018-11-22 23:05 yanhua-tj 阅读(75) 评论(0) 推荐(0)