C++各种模板

高精度:

重载运算符版:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int NR=1e4;
char s[NR];
struct Bigint
{
    int num[NR];
    Bigint()
    {
        memset(num,0,sizeof(num));
        num[0]=1;
    }
    void read()
    {
        scanf("%s",s);
        num[0]=strlen(s);
        for(int i=1;i<=num[0];i++)
            num[i]=s[num[0]-i]-'0';
    }
    void print()
    {
        for(int i=num[0];i>=1;i--)
            printf("%d",num[i]);
        puts("");
    }
    Bigint operator + (const Bigint &B) const
    {
        Bigint c;
        c.num[0]=max(num[0],B.num[0]);
        for(int i=1;i<=c.num[0];i++)
        {
            c.num[i]+=num[i]+B.num[i];
            c.num[i+1]+=c.num[i]/10;
            c.num[i]%=10;
        }
        if(c.num[c.num[0]+1]>0) 
            c.num[0]++;
        return c;
    }
};
int main(void)
{
    Bigint a,b,c;
    a.read();
    b.read();
    c=a+b;
    c.print();
    return 0;
}
View Code

普通高精度:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int NR=1e3;
char s[NR+5];
int a[NR+5],b[NR+5],c[NR+5];
void read(int a[])
{
    scanf("%s",s);
    a[0]=strlen(s);
    for(int i=1;i<=a[0];i++)
        a[i]=s[a[0]-i]-'0';
}
void print(int a[])
{
    for(int i=a[0];i>=1;i--)
        printf("%d",a[i]);
    puts("");
}
void add(int a[],int b[],int c[])
{
    c[0]=max(a[0],b[0]);
    for(int i=1;i<=c[0];i++)
    {
        c[i]+=a[i]+b[i];
        c[i+1]=c[i]/10;
        c[i]%=10;
    }
    if(c[c[0]+1]>0)
        printf("%d",c[c[0]]+1);
}
int main()
{
    read(a);
    read(b);
    add(a,b,c);
    print(c);
    return 0;
}
View Code

快速幂:

#include<cstdio>
#include<algorithm>
using namespace std;
long long po(long long x,long long p,long long k)
{
    if(p==0)
        return 1;
    if(p==1)
        return x;
    int a=po(x,p/2,k);
    a%=k;
    if(p%2==0)
        return (a*a)%k;
    return (a*a*x)%k;
}
int main(void)
{
    long long x,p,k;
    scanf("%lld%lld%lld",&x,&p,&k);
    printf("%lld^%lld mod %lld=%lld\n",x,p,k,po(x,p,k)%k);
    return 0;
}
View Code

猜你喜欢

转载自www.cnblogs.com/tarjin/p/11410615.html
今日推荐