社区讨论

高精度哪错了?

P1932A+B A-B A*B A/B A%B Problem参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lyqt72me
此快照首次捕获于
2024/07/18 13:06
2 年前
此快照最后确认于
2024/07/18 14:17
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
char sa[1000001],sb[1000001],tmp[1000001];
int a[1000001],b[1000001],c[1000001]={},x=0,d;
int main()
{
    scanf("%s %s",sa,sb);
    memset(c,0,sizeof(c));
    int la=strlen(sa);
    int lb=strlen(sb);
    for(int i=0;i<la;i++) a[la-1-i]=sa[i]-'0';
    for(int i=0;i<lb;i++) b[lb-1-i]=sb[i]-'0';
    int lc=la>lb?la:lb;
    for(int i=0;i<lc;i++){
        c[i]+=a[i]+b[i];
        c[i+1]=c[i]/10;
        c[i]=c[i]%10;
    }
    if(c[lc]>0) lc++;
    while(c[lc]==0) lc--;
    for(int i=lc-1;i>=0;i--) printf("%d",c[i]);
    printf("\n");
    memset(c,0,sizeof(c));
    la=strlen(sa);
    lb=strlen(sb);
    if(la>lb||(la==lb&&strcmp(sa,sb)<0)){
        strcpy(tmp,sa);
        strcpy(sa,sb);
        strcpy(sb,tmp);
        swap(la,lb);
        printf("%c",'-');
    }
    lc=la>lb?la:lb;
    for(int i=0;i<la;i++) a[la-i]=sa[i]-'0';
    for(int i=0;i<lb;i++) b[lb-i]=sb[i]-'0';
    for(int i=1;i<=lc;i++){
        if(a[i]<b[i]){
            a[i]+=10;
            a[i+1]--;
        }
        c[i]=a[i]-b[i];
    }
    while(c[lc]==0) lc--;
    for(int i=lc;i>=1;i--) printf("%d",c[i]);
    printf("\n");
    la=strlen(sa);
    lb=strlen(sb);
    for(int i=0;i<lb;i++) d=d*10+sb[i]-'0';
    for(int i=0;i<la;i++) a[la-i]=sa[i]-'0';
    for(int i=0;i<lb;i++) b[lb-i]=sb[i]-'0';
    for(int i=1;i<=la;i++)
        for(int j=1;j<=lb;j++) c[i+j-1]+=a[i]*b[j];
    lc=la+lb;
    for(int i=1;i<=lc;i++){
        c[i+1]+=c[i]/10;
        c[i]%=10;
    }
    while(c[lc]==0&&lc>1) lc--;
    for(int i=lc;i>=1;i--) printf("%d",c[i]);
    printf("\n");
    la=strlen(sa);
    for(int i=0;i<la;i++) a[i+1]=sa[i]-'0';
    for(int i=1;i<=la;i++){
        c[i]=(x*10+a[i])/d;
        x=(x*10+a[i])%d;
    }
    lc=1;
    while(c[lc]==0&&lc<la) lc++;
    for(int i=lc;i<=la;i++) printf("%d",c[i]);
    cout<<endl<<x;
    return 0;
}
大佬们帮午休一下好么? 比这个都差!
CPP
#include<bits/stdc++.h>
using namespace std;
int a,b;
int main()
{
    scanf("%d %d",a,b);
    cout<<a+b<<endl<<a-b<<endl<<a*b<<endl<<a/b<<endl<<a%b;
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...