【机房必备】对拍&读入输出优化&氧气&高精度

本文分享了作者在新机房遇到缺少资源时的手动解决方案——手写对拍程序,并介绍了输入输出优化方法及高精度运算实现,包括加法、乘法和比较大小等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跑到新机房,发现没有s盘
于是手写了一个对拍(实验证明是对的)
虽然给了板子在这,但还是强烈建议背下来

对拍

@echo off
:loop
data.exe
1.exe
2.exe
fc 1.txt 2.txt 
if not errorlevel 1 goto loop
pause
goto loop

读入优化

inline int rd(){
    int x=0,y=1;
    char ch;
    while((ch=getchar())<'0'||ch>'9')if(ch=='-')y=-1;
    while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
    return x*y;
}

cin可以用这个

ios::sync_with_stdio(false);

输出优化有两种

一般来说,递归的程序慢一点
稍快:

inline int wt(int x){
    if(!x)putchar('0');
    if(x<0)putchar('-'),x=-x;
    while(x)tmp[++tmp[0]]=x%10,x/=10;
    while(tmp[0])putchar(tmp[tmp[0]--]+'0');
    putchar('\n');
}

稍慢:

inline void write(int x)
{
     if(x<0) putchar('-'),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+'0');
}

氧气

其实还有臭氧的。。。

#prag\
ma GCC optimize ("O2") 

高精度加法

void Plu(int *o,int *p,int *q){
    memset(tmp,0,sizeof(tmp));
    tmp[0]=max(p[0],q[0])+1;
    for(int i=1;i<=tmp[0];i++){
        tmp[i]+=p[i]+q[i];
        tmp[i+1]+=tmp[i]/10;
        tmp[i]%=10;
    }
    while(tmp[tmp[0]]==0&&tmp[0])tmp[0]--;
    memcpy(o,tmp,sizeof(tmp));
}

高精度乘法

void Mul(int *o,int *p,int *q){
    memset(tmp,0,sizeof(tmp));
    tmp[0]=p[0]+q[0];
    for(int i=1;i<=p[0];i++)
        for(int j=1;j<=q[0];j++)
            tmp[i+j-1]+=p[i]*q[j];
    for(int i=1;i<=tmp[0];i++){
        tmp[i+1]+=tmp[i]/10;
        tmp[i]%=10;
    }
    while(tmp[tmp[0]]==0&&tmp[0])tmp[0]--;
    memcpy(o,tmp,sizeof(tmp));
}

高精度大于号

bool Max(int *p,int *q){
    if(p[0]>q[0])return 1;
    if(p[0]<q[0])return 0;
    for(int i=p[0];i>=1;i--)if(p[i]>q[i])return 1;
    else if(p[i]<q[i])return 0;
    return 0;
}

高精度输出(无优化)

void Pri(int *x){
    if(x[0]==0)printf("0");
    else for(int i=x[0];i>=1;i--)printf("%d",x[i]);
    printf("\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值