这是一道我题目理解错了,但是做对了的题。。。
令答案为F(n,k)。画了1张草稿纸之后,发现通过对称,F(n,k) = F(n,n-k+1)。
画了2张草稿之后,发现F(n,ceil(n/2)) = F(n,floor(n/2)) = n,就是中间两个数。
然后又画了N草稿之后,发现F(n,k) =2k。(k<|n/2|)
代码很乱,不足参考
#include <cmath>
#include <cstdio>
long N;long K;
int main()
{
freopen("function.in","r",stdin);
freopen("function.out","w",stdout);
scanf("%ld%ld",&N,&K);
if (N == 1)
{
printf("1");
return 0;
}
if (N == 2)
{
printf("2");
return 0;
}
if (N == K)
{
printf("2");
return 0;
}
if ((N&1 && K==N/2+1)||(!(N&1) && K==N/2))
{
printf("%ld",N);
return 0;
}
if (K > (N>>1))
K = N - K + 1;
if (K == 1)
{
printf("2");
return 0;
}
printf("%ld",(K<<1));
return 0;
}