文章

64

粉丝

100

获赞

4

访问

36.1k

头像
进制转换3 题解:
P1422 清华大学/厦门大学机试题
发布于2024年3月15日 17:17
阅读数 778

1422解题思路

最开始出现80%,最后修改sum的类型为long,Accepted!!

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int m,n;
	char x;
	scanf("%d %d",&m,&n);
	getchar();
	char b[105];
	gets(b);
	int l=strlen(b);
	char a[105]={0};
	long sum=0;
	//转化为10进制 
	
		for(int j=0;j<l;j++)
		{
			if(m<10) 
			sum=sum*m+b[j]-'0';	
			if(m>= 10)
			{
				if(b[j]>='0'&&b[j]<='9')
				sum=sum*m+b[j]-'0';
				else
				sum=sum*m+b[j]-'A'+10;
			}
		}	
	//将十进制转化为n进制
	int i=0;
		if(n<10)
		{	
		while(sum>0)
		{
			int y=sum%n;
			sum=sum/n;
			a[i++]=y+'0';
		}
		}
		if(n>=10)
		{
			while(sum>0)
			{
				int y=sum%n;
				sum=sum/n;
				if(y>=10)
				a[i++]=y+'a'-10;
				if(y<10)
				a[i++]=y+'0';
			}
		}
		for(int j=i-1;j>=0;j--)
		{
			printf("%c",a[j]);
		}
	  
	
}

 

登录查看完整内容


登录后发布评论

1 条评论
big_monkey
2024年8月7日 19:12

果然,数据类型错误,要用long long int

赞(0)