记录编号 215152 评测结果 AAAAATTTTT
题目名称 [ZJOI 2012] 数列 最终得分 50
用户昵称 Gravatar冰皇 是否通过 未通过
代码语言 C++ 运行时间 5.007 s
提交时间 2015-12-20 11:08:24 内存使用 0.26 MiB
显示代码纯文本
#include<stdio.h>
long long n,a1;
int t;
long long sq2(long long n)
{
            long long sum=1;
            while(1)
            {
                    if(sum>=n)
                    return sum;
                    sum*=2;
            }
}
long long max(long long a1,long long a2,long long b1,long long b2,long long n)
{
          if((a1+a2)/2==n)return b1+b2;
          else if(n<(a1+a2)/2)return max(a1,(a1+a2)/2,b1,b1+b2,n);
          else return max((a1+a2)/2,a2,b1+b2,b2,n);
}
int main()
{
          freopen("sequencezj.in","r",stdin);
          freopen("sequencezj.out","w",stdout);
          scanf("%d",&t);
          for(int i=0;i<t;i++)
          {
                  scanf("%lld",&n);
                  a1=sq2(n);
                  if(n==0)
                  {
                          printf("0\n");
                          continue;
                  }
                  else if(n==a1)
                  {
                               printf("1\n");
                               continue;
                  }
                  else
                  printf("%lld\n",max(a1/2,a1,1,1,n));
          }
          return 0;
}