1 条题解

  • 0
    @ 2025-8-24 23:02:19

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar liuliucy
    **

    搬运于2025-08-24 23:02:19,当前版本为作者最后更新于2024-08-22 21:21:38,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    首先考虑等差数列求和,这里是题目是公差为一的等差数列,设第一个数是 nn,最后一个是 mm,我们能列出公式:

    ai=(n+m)×(mn+1)2a_i=\frac{(n+m)\times(m-n+1)}{2}

    我们要找到一个不能被连续数和表示的 aia_i,移项有:

    2ai=(n+m)×(mn+1)2a_i=(n+m)\times(m-n+1)

    不能被表示,当且仅当 n=mn=m,只能被自身表示,我们容易发现,n+mn+mmn+1m-n+1 奇偶性不同,所以若能写成这种形式,一定是能分解成一个奇数乘一个偶数的形式,所以只要左边是 2n2^n 的形式,就一定不能被表示,否则一定能被表示。

    CODE

    短短的也很可爱。

    #include<bits/stdc++.h>
    using namespace std;
    int n,ans;
    #define int long long
    signed main(){
    	scanf("%lld",&n);
    	for(int i=1;i<=n;i++){
    		int x;
    		scanf("%lld",&x);
    		int p=log2(x);
    		if((1ll<<p)==x){
    			ans++;
    		}
    	}
    	printf("%lld",ans);
    }
    
    • 1

    信息

    ID
    10689
    时间
    2000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者