【寻找规律】函数


这是一道我题目理解错了,但是做对了的题。。。

令答案为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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值