关于二进制转化为十进制的问题

关于二进制转化为十进制的问题

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n;            //二进制数
    int count;                  //用来存储数字个数

    cin >> count ;
    cin >> n;
    int * p = new int[count];    //定义一个数组存储每一个数字
    for(int i = count -1;i>=0;i--)      /*循环的目的是把数字存入数组中*/
    {
        p[count - i - 1] = n /pow(10.0,i);
        n = n - p[count - i - 1] * pow(10.0,i);
    }

    int S = 0;      
    for(int i = 0;i<count ;i++)       //这个循环负责转换二进制,公式我就不写啦
    {
        S = S + p[i]*pow(2.0,count - i - 1) ;
    }
    cout << S << endl;
    return 0;
}

这个代码我测试这没问题,随便试了几个二进制数字也是可以转化的,但是在一个编程网站上显示10组数据中通过了8组,请问这是为什么??希望有大佬可以指点一下。

不要用pow,而应该移位,否则可能存在浮点误差,导致错误
还有就是负数、小数、超大数这些你的程序不支持,看题目怎么说

可以发一下题目链接吗,或许是题目要求的问题