社区讨论
高精度哪错了?
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 条回复,欢迎继续交流。
正在加载回复...