文章

1

粉丝

131

获赞

0

访问

7.7k

头像
考虑大数情况
P1422 清华大学/厦门大学机试题
发布于2021年3月7日 18:31
阅读数 7.7k

一部分AC的代码,将11进制的1A转为10进制时,会出现28的错误答案(应该是21)

贴出我的AC代码,要是也有错还烦请各位告知一声wink

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
  	int m,n;
	cin>>m>>n;
	string s;
	cin>>s;
	vector<int> ans;
	//ans每位*m,s[i]只加在个位,然后检查各位是否需要进位
	int slen=s.length();
	ans.push_back(0);
	int aend=1;//指向ans最后一位的下一位
	for (int i = 0; i < slen; i++)//i遍历s
	{
		for (int j = 0; j < aend; j++)//每位*m
		{
			ans[j] =ans[j]*m;
			if (j==0){
				if(s[i]>='0'&&s[i]<='9')
					ans[j]+=s[i]-'0';
				else
					ans[j]+=s[i]-'A'+10;}
		}
		for (int j = 0; j < aend; j++)//检查是否进位
		{
			if (ans[j]>=n)
			{
				if(j==aend-1){
					aend++;
					ans.push_back(0);
				}
				ans[j+1] += ans[j]/n;//注意是除以n
				ans[j]=ans[j]%n;
			}
		}
	}
	string result;
	for (int i = aend-1; i >=0; i--)
	{
		if (n>10)
		{
			if (ans[i]>=10)
			{
				result.push_back(char(ans[i]-10+'a'));
		...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发