社区讨论

超长代码 20pts RE 求调

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@m4twd0jk
此快照首次捕获于
2024/12/18 20:56
去年
此快照最后确认于
2025/11/04 12:39
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long a[10005],b[10005],c[10005];
string n,m,str;
void in(){
	cin>>n>>m;
	str=n;
}
void zh(string s,long long a[]){
	reverse(s.begin(),s.end());
	for(long long i=0;i<s.size();i++){
		a[i]=s[i]-'0';
	}
}
void jia(){
	long long la,lb,lc;
	zh(n,a);
	zh(m,b);
	la=n.size();
	lb=m.size();
	lc=max(la,lb);
	for(long long i=0;i<lc;i++){
		c[i]=a[i]+b[i];
	}
	long long jw=0;
	for(long long i=0;i<lc;i++){
		c[i]=c[i]+jw;
		jw=c[i]/10;
		c[i]=c[i]%10;
	}
	if(jw!=0){
		lc++;
		c[lc-1]=jw;
	}
	for(long long i=lc-1;i>=0;i--){
		cout<<c[i];
	}
	cout<<'\n';
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
}
string jian(string s1,string s2){
	string s3="",ss="";
	long long x=0;
	if(s1.size()<s2.size()||(s1.size()==s2.size()&&s1<s2)){
		swap(s1,s2);
		s3="-";
	}
	if(s1==s2) return "0";
	for(long long i=0;i<s1.size();i++) a[i+1]=s1[i]-'0';
	for(long long i=0;i<s2.size();i++) b[i-s2.size()+s1.size()+1]=s2[i]-'0';
	for(long long i=1;i<=s1.size();i++) a[i]-=b[i];
	for(long long i=s1.size();i>=1;i--){
		if(a[i]<0){
			a[i]+=10;
			a[i-1]--;
		}
	}
	while(a[x]==0) x++;
	for(long long i=x;i<=s1.size();i++) ss+=char(a[i]+'0');
	return s3+ss;
}
void cheng(){
	if(n=="0"||m=="0") cout<<0<<'\n';
	else{
		long long len1=n.size();
		for(long long i=1;i<=len1;i++)
			a[i]=n[len1-i]-'0';
		long long len2 =m.size();
		for(long long i=1;i<=len2;i++) b[i]=m[len2-i]-'0';
		long long len=len1+len2;
		for(long long i=1;i<=len1;i++){
			for(long long j=1;j<=len2;j++) c[i+j-1]+=a[i]*b[j];
		}
		for(long long i=1;i<=len;i++){
			if(c[i]>=10){
				c[i+1]+=c[i]/10;
				c[i]%=10;
			}
		}
		if(c[len]==0) len--;
		for(long long i=len;i>=1;i--) cout<<c[i];
		cout<<'\n';
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(c,0,sizeof(c));
	}
}
void chu(){
	long long s=stoll(m);
	long long l1=str.size(),x=0;
	for(long long i=1;i<=l1;i++) a[i]=int(str[i-1])-48;
	for(long long i=1;i<=l1;i++){
		x=x*10+a[i];
		b[i]=x/s;
		x=x%s;
	}
	long long n=1;
	while(b[n]==0&&n<l1) n++;
	for(long long i=n;i<=l1;i++) cout<<b[i];
	cout<<'\n';
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
}
void mo(){
	long long pop=stoll(n),pop1=stoll(m);
	cout<<pop%pop1;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	in();
	jia();
	cout<<jian(n,m)<<'\n';
	cheng();
	chu();
	mo();
	return 0;
}

回复

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

正在加载回复...