第八个测试点输出误差1。
查看原帖
第八个测试点输出误差1。
481471
Eric12楼主2021/6/12 08:28
#include <iostream>
#include <string>
using namespace std;
int pow(int num,int cifang)
{
	int zancun=num;//我怕影响实参。 
//	if(cifang!=0)
	for(int i=1;i<cifang;i++)
		zancun*=num; 
	return zancun;
} 
long long str2_long10(string num) 
{
	long long cifang=0,result=0;
    for(int i=num.size()-1;i>=0;i--)//按权展开。
    {
        result+=int(num[i]-'0')*pow(2,cifang);//不能用STL模板库pow()会负数。 
        cifang++;
    }
    return result;
}
string long10_str2(long long num)
{
	string result="";
	if(num==0)
		return "0";
	long long zancun=num;//怕改变实参。 
	while(zancun!=0)
	{
		result+=char((zancun%2)+'0');
		zancun/=2;
	}
	string result2;
	if(result.size()!=32)
		for(int i=0;i<32-result.size();i++) //好坑,要补全“0” 
			result2+='0';
	for(int j=result.size()-1;j>=0;j--)//反转字符串 
		result2+=result[j];
	return result2;
}
int main()
{
	long long n;
	string a,b,c;
	cin>>n;
	a=long10_str2(n);
	b=c="";
	for(int i=0;i<=15;i++)
		b+=a[i];
	for(int i=16;i<=31;i++)
		c+=a[i];
	a=c+b;
	cout<<str2_long10(a)<<endl;
	return 0;
}

第八个测试点:

输入:19880516

输出:1514406192

正确输出:1514406191

我的代码哪错了?怎么有误差?

帮忙看一下。

2021/6/12 08:28
加载中...