蒟蒻在线求助,被助完后就去学背包DP了,准备校赛
  • 板块P1143 进制转换
  • 楼主TJ_WY
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/3 18:54
  • 上次更新2023/12/3 21:07:52
查看原帖
蒟蒻在线求助,被助完后就去学背包DP了,准备校赛
1162195
TJ_WY楼主2023/12/3 18:54

乌鱼,本地跑有问题,交上去连一个分都骗不了

窝的思路没戳啊?为什么会跑不起来? 在线求助

#include<bits/stdc++.h>
using namespace std;
int szzh(char c){//字符转数字自定义函数
	int rt;
	switch(c){
		case '1':rt=1;break;
		case '2':rt=2;break;
		case '3':rt=3;break;
		case '4':rt=4;break;
		case '5':rt=5;break;
		case '6':rt=6;break;
		case '7':rt=7;break;
		case '8':rt=8;break;
		case '9':rt=9;break;
		case '0':rt=0;break;
		case 'A':rt=10;break;
		case 'B':rt=11;break;
		case 'C':rt=12;break;
		case 'D':rt=13;break;
		case 'E':rt=14;break;
		case 'F':rt=15;break;
	}
	return rt;
}
char szzh2(int c){//数字转字符自定义函数
	char rt;
	switch(c){
		case 1:rt='1';break;
		case 2:rt='2';break;
		case 3:rt='3';break;
		case 4:rt='4';break;
		case 5:rt='5';break;
		case 6:rt='6';break;
		case 7:rt='7';break;
		case 8:rt='8';break;
		case 9:rt='9';break;
		case 0:rt='0';break;
		case 10:rt='A';break;
		case 11:rt='B';break;
		case 12:rt='C';break;
		case 13:rt='D';break;
		case 14:rt='E';break;
		case 15:rt='F';break;
	}
	return rt;
}
int main(){
	int jz1=0,l=0,jz2=0,jw=0,sy,i;//jz1为最开始数字的进制,l是数字长度,jz2是需要转换的进制,jw保存进位,sy是数组前面第一个非0数字的索引
	string n="";//字符串处理数字,更方便
	cin>>jz1>>n>>jz2;
	l=n.length();
	int an[31];//最长的2进制10的9次也只需要31位保存
	for(i=0;i<=l-1;i++){//将字符串转数组后保存在an里
		an[31-i]=szzh(n[i]);
	}
	for(i=0;i<=l-1;i++){//进制转换
		an[31-i]+=pow(jz1,i)*an[31-i]+jw;
		jw=an[31-i]/jz2;
		an[31-i]%=jz2;
	}
	for(i=0;i<=l-1;i++){//获取第一个非0数位的索引/位置
		if(an[i]!=0){
			sy=i;
			break;//找到了跳出,避免变成数字中0
		}
	}
	for(int i=sy;i<=l-1;i++){//数字转字符输出
		cout<<szzh2(an[i]);
	}
	return 0;
}```
有注释,DALAO应该很块就能找到错误把?
2023/12/3 18:54
加载中...