慢速乘模板(支持负数与零

Posted war1111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了慢速乘模板(支持负数与零相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cstring>
#define inf 2147483647
#define N 1000010
#define p(a) putchar(a)
#define For(i,a,b) for(long long i=a;i<=b;++i)
//by war
//2019.8.7
using namespace std;
long long a,b,p;
void in(long long &x)
    long long y=1;char c=getchar();x=0;
    while(c<0||c>9)if(c==-)y=-1;c=getchar();
    while(c<=9&&c>=0) x=(x<<1)+(x<<3)+c-0;c=getchar();
    x*=y;

void o(long long x)
    if(x<0)p(-);x=-x;
    if(x>9)o(x/10);
    p(x%10+0);


long long msc(long long a,long long b)
    long long r=0,y=1;
    if((a^b)<0)  y*=-1;
    a=abs(a);b=abs(b);
    while(b>0)
        if(b&1)
            r=(r+a)%p;
        a=(a<<1)%p;
        b>>=1;
    
    return r*y;


signed main()
    in(a);in(b);in(p);
    o(msc(a,b));
    return 0;

 

以上是关于慢速乘模板(支持负数与零的主要内容,如果未能解决你的问题,请参考以下文章

模板—慢速乘

MACD指标

java怎么计算一个整数长度(不含负数符号)?

文本框只能输入数值,小数点,负数的问题

Qt之加减乘除四则运算-支持负数

模板小程序2~62位非负数任意进制转换,包含合法性检查