文章

7

粉丝

502

获赞

2

访问

16.5k

头像
题目1176 十进制和二进制
学习交流
发布于2024年1月1日 17:07
阅读数 813

#include<stdio.h>
#include <math.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;

int main()
{
    int x;
    int s[4000];  
    while(cin >> x)//将x逐位分解,且x的逆序二进制数存放在s数组中
    {
        int cnt=0;//数组下标
        int len = 0;//记录数组长度 
		while (x > 0)
		{
			int w=(x % 2);
	        if (w < 10) s[cnt++] = w + '0';
	        else s[cnt++] = (w - 10) + 'A';
	        x /= 2;
	        len = cnt; 
		}
		int ans = 0;
	    for(int i = 0;i < len; i++)//转换为10进制 
	    {
	       ans = ans * 2;
	       if (s[i] >= '0' && s[i] <= '9')	ans += (s[i] - '0');
	       else ans += (s[i] - 'A') + 10;
	    }
	    cout << ans;		
    }
    return 0;  
}

OJ显示Presentation Error,但我输入173,输出是和样例一致的。不知道问题出在哪crying

登录查看完整内容


登录后发布评论

6 条评论
snake VIP
2024年1月1日 22:31

你的输出没有换行,多组输入的时候会导致输出结果连在一起。

赞(0)

冷喵 : 回复 snake: 我加上了cout << endl;结果还是Wrong Answer,题目数据通过率为:50%

2024年1月2日 09:11

snake : 回复 冷喵: 仔细看了你的算法,和题目的要求有点区别,题目输入的数最大是1000位的数字,也就是10^1000,你定义的x的范围是int,最大是10^9。也就是说,你现在这个算法可以解决小数据的问题,但是对于大数据部分是不行的,需要重新设计算法。

2024年1月2日 14:00

冷喵 : 回复 snake: 那具体要怎么操作?(✪ω✪)

2024年1月2日 23:27

snake : 回复 冷喵: 这里有很多题解可以参考:https://noobdream.com/solution_list/1176/

2024年1月3日 09:44

冷喵 : 回复 snake: 好的

2024年1月4日 22:40