多进制高精爆了!
  • 板块学术版
  • 楼主DevilsFlame
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/14 13:22
  • 上次更新2023/12/14 17:12:05
查看原帖
多进制高精爆了!
1050431
DevilsFlame楼主2023/12/14 13:22

请求大佬查漏,高精为什么就爆掉了?

#include<bits/stdc++.h>
using namespace std;
char a[1001],b[1001];
int n,ans=0,f[17]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},v1,v2,s[1001];
int main(){
	cin>>n;
	cin>>a>>b;
	v1=strlen(a);
	v2=strlen(b);
	for(int i=1;i<=v1;i++){
		s[i]=a[v1-i]-48;
	}
	for(int i=1;i<=v2;i++){
		s[i]+=b[v2-i]-48;
		s[i+1]+=s[i]/10;
		s[i]%=10;
	}
	v1=max(v1,v2);
	for(int i=1;i<=v1;i++){
		s[i]+=s[i+1]*10;
		s[i+1]=0;
		for(int j=i+2;j<=v1&&s[i]<f[n];j++){
			s[i]+=s[j]*pow(10,j);
			s[j]=0;
		}
		s[i+1]=s[i]/f[n];
		s[i]%=f[n];
	}
	v1++;
	while(!s[v1])
		v1--;
	while(s[v1]>=f[n]){
		s[v1+1]+=s[v1]/f[n];
		s[v1]%=f[n];
		v1++;
	}
	char w;
	for(int i=v1;i>0;i--){
		if(s[i]<10)
			cout<<s[i];
		else{
			w=65+s[i]-10;
			cout<<char(w);
		}
	}
	return 0;
}
2023/12/14 13:22
加载中...