社区讨论

#5错了95

P1581A+B Problem(升级版)参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@lwhbtza5
此快照首次捕获于
2024/05/22 12:31
2 年前
此快照最后确认于
2024/05/22 17:06
2 年前
查看原帖
CPP
#include<stdio.h>
#include<string.h>
char s[100000],s1[100000];
int a[100000],b[100000],c[100000],jw,qs,qb,t,len,j,k;
int main(){
	int w[6]={2,3,5,7,11,13},w1=0;
	scanf("%s",s);
	qs=strlen(s);
	for(int i=1;i<=qs;i++){
		if(s[qs-i]!=','&&s[qs-i]!='+'){
			t++;
			s1[t]=s[qs-i];
		}
		if(s[qs-i]=='+') qb=t;
	}
	for(int i=1;i<=qb;i++){
		if(s1[i]>='0'&&s1[i]<='9') a[i]=s1[i]-'0';
		if(s1[i]>='A'&&s1[i]<='Z') a[i]=s1[i]-'A'+10;
	}
	for(int i=qb+1;i<=t;i++){
		if(s1[i]>='0'&&s1[i]<='9') b[i]=s1[i]-'0';
		if(s1[i]>='A'&&s1[i]<='Z') b[i]=s1[i]-'A'+10;
	}
	/*for(int i=1;i<=qb;i++) printf("%d ",a[i]);
	printf("\n");
	for(int i=qb+1;i<=t;i++) printf("%d ",b[i]);*/
	if(qb>(t-qb)) len=t;
	else len=t-qb;
	//printf("%d\n",len);
	k=qb+1;
	for(int i=1;i<=len;i++){
		//printf("%d %d %d\n",a[i],b[i],c[i]);
		c[i]=(a[i]+b[k]+jw)%w[w1];
		jw=(a[i]+b[k]+jw)/w[w1];
		if(k!=t) k++;
		w1++;
	}
	if(jw!=0){
		len++;
		c[len]=jw;
		c[len-1]=c[len-1]%w[w1+1];
		jw=0;
	}
	for(int i=len;i>=1;i--){
		if(j!=0){
			printf(",");
		}
		else{
			j=1;
		}
		if(c[i]<=9) printf("%d",c[i]);
		else printf("%c",c[i]-10+'A');
	}
	return 0;
}

回复

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

正在加载回复...