专栏文章

B3876 [信息与未来 2015] 中间值 题解

B3876题解参与者 3已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@miq91hvm
此快照首次捕获于
2025/12/04 00:56
3 个月前
此快照最后确认于
2025/12/04 00:56
3 个月前
查看原文
看到这一题,首先想到的就是用一个数组吧?不过仔细一想,好像不需要。为什么呢?因为 ai=ia_i=i,你不管想输出哪一个数字,你直接输出就行了。因为 ai=ia_i=i,所以输出 ii 就是输出 aia_i
那就好办了,只需找最中间的数字不就好了?
我们来举一个例子来推理。
n=5n=5
1 2 3 4 5
不难发现,最中间的数字是三,在观察他的位置,会发现他在 an÷2+1a_{n \div 2+1} 这里,也就是 n÷2+1n \div 2+1。正好等于三,那么我们不仅把开头说到的证明了,而且知道了 nn 中间是 n÷2+1n \div 2+1
然后我们处理下一个问题,如果 nn 为偶数,中间的两个数是什么呢?依旧是举例子。
n=4n=4
1 2 3 4
我们会发现,中间两个数是 2 和 3。2 是 n÷2n \div 2,3 是 n÷2+1n \div 2+1。那么我们就知道了中间那个数是几,最后加起来就好了。
看,我们通过举例子成功推断出来了这道题。所以以后做题也可以通过举例子来做。
CPP
#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
	cin>>n;
	if(n%2!=0){
		cout<<(n+1)/2<<endl;
	}else if(n%2==0){
		cout<<n/2+n/2+1<<endl;
	}
    return 0;
}

评论

3 条评论,欢迎与作者交流。

正在加载评论...