POJ2309 BST

来源:百度知道 编辑:UC知道 时间:2024/05/25 01:54:48
题目地址:http://acm.pku.edu.cn/JudgeOnline/problem?id=2309
我的代码:
#include <stdio.h>
#include <math.h>

int main()
{
unsigned int n,a,i,j,b;
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);
j=0;
b=pow(2.0,(double)j);
while(a%b==0){j++;b=pow(2.0,(double)j);}
b=0;
for(i=1;i<j;i++) b+=pow(2.0,(double)i);
printf("%d %d\n",(2*a-b)/2,(2*a+b)/2);
}
return 0;
}

在自己电脑上运行,答案正确。但提交后,老是说wrong answer

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
long num;
cin>>num;
for(int i=0;i<num;i++)
{
long i_input;
cin>>i_input;
long n=i_input;
if(i_input>0)
{
int count=0;
while(n%2==0)
{
n=n/2;
count++;
}
long t=(int)pow(2.0,count)-1;
cout<<i_input-t<<""<<i_input+t<<endl;
}
}
return 0;
}
这个是我的,思想和你的差不多,AC了