谁能告诉我为什么这个二进制到十进制程序对于二进制数11111111111给出错误的结果?

问题描述 投票:0回答:1

我的代码:

#include <iostream>
#include<cmath>
using namespace std;

int main() {
    int t;
    cin>>t;
    for(int k=1;k<=t;k++)
    {
        int base=2,n,n1,d,nd=0,i=0;//n=binary no.,nd=decimal quivalent of n
        cin>>n;//binary no.
        n1=n;
        while(n1>0)
        {   
            d=n1%10;
            nd=nd+(d*pow(2,i));
            i++;
            if(i<16)//since there can be max 16 digits, power will go till 15
                n1=n1/10;
        }
        cout<<nd<<endl;
    }
    return 0;
}

我的输出:错误的答案。 !!!!!!!

可能您的代码在多个测试用例(TC)中无法正常工作。

您的代码失败的第一个测试用例:

输入:11111111111

其正确的输出是:2047

您的代码的输出为:2559

原始问题:二进制数到十进制数

给出一个二进制数B,打印其等效的十进制数。

输入:输入的第一行包含一个整数T,它表示测试用例的数量。 T测试用例的说明如下。每个测试用例都包含一个二进制数B。

输出:对于每个测试用例,在新行中,在新行中打印每个十进制数。

约束:1 <= T <= 1001 <=二进制数字<= 16

示例:输入:210001000101100输出:13644

我的代码:#include #include 使用命名空间std; int main(){int t; cin >> t; for(int k = 1; k <= t; k ++){int base = 2,n,n1,d,nd = 0,i = 0; // n = ...

c++ binary decimal
1个回答
-1
投票
unsigned long long int数据类型而不是int起作用。

修改的代码:

© www.soinside.com 2019 - 2024. All rights reserved.