快速乘
对于大数直接相乘可能会爆long long,用快速乘每一步取余不会爆掉;
原理:
a*b%c;则 a * b=a * (b1+b2+b3+…);
例如:a * 53=a * 110101(2)=a * (100000+10000+100+1)=a * (100000 * 1+10000 * 1+1000 * 0+100 * 1+10 * 0+1 * 1),这里的10000啥的就是2的N次方;
注意:&是相与符号,按二进制做与运算,例如:b&1,b=2为010(2),1为001(2),则2&1为000;
<<为左移运算符,>>为右移运算符,例如:b>>=1,则是将b的二进制右移1位,左补0或补1(得看被移数是正还是负),其实就是b=b/2;
核心代码
int f(int a,int b,