| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:为什么我用G++会超时?C++就是15MS,用二分来写的,应该不会超时啊?请高手指点In Reply To:为什么我用G++会超时?C++就是15MS,用二分来写的,应该不会超时啊?请高手指点 Posted by:381528779 at 2006-07-18 21:04:23 > #include<stdio.h>
>
> __int64 a[33];
>
> int main()
> {
> __int64 num,i,low,high,mid,t;
> for(i=0;i<33;i++)
> a[i]=1<<i;
> scanf("%I64d",&t);
> while(t--)
> {
> scanf("%I64d",&num);
>
> for(i=0;i<32&&a[i]<num;i++)
> ;
> if(a[i]==num)
> {
> printf("1 %I64d\n",a[i+1]-1);
> continue;
> }
> low=a[i-1],high=a[i];
> while(low<=high)
> {
> mid=(low+high)>>1;
> if(mid>num)
> high=mid;
> else
> if(mid<num)
> low=mid;
> else
> break;
> }
> if(mid%2==1)
> {
> printf("%I64d %I64d\n",mid,mid);
> }
> else
> printf("%I64d %I64d\n",low+1,high-1);
>
>
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator