zoukankan      html  css  js  c++  java
  • CF1327A Sum of Odd Integers 题解

    CSDN同步

    原题链接

    简要题意:

    多组数据,问能否把 (n) 分为 (k)不同的 正奇数之和。

    盲猜数学结论题。

    只要考虑两个问题:

    1. (n) 的大小是否足够。

    2. (n) 的奇偶性是否满足。

    对于第 (1) 条,最小的 (k)不同的 正奇数之和为 (k^2).(这都不知道,建议重学小学数学)

    所以,(n geq k^2) 才可能有解。

    对于第 (2) 条,因为 (k) 个正奇数与 (k) 的奇偶性相同,所以必须满足:

    [n equiv k pmod 2 ]

    这两条同时满足即有解,否则无解。

    为什么呢?

    考虑一种拆分:

    [1 + 3 + 5 + ... + (2k-3) + p = n ]

    即前 (k-1) 个正奇数加上另一个奇数。

    如果 (n) 同时满足上两条,则显然存在这样的拆分,且 (p geq 2 imes k - 1),也不存在重复。

    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    
    inline ll read(){char ch=getchar();int f=1;while(ch<'0' || ch>'9') {if(ch=='-') f=-f; ch=getchar();}
    	ll x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;}
    
    int main(){
    	ll T=read(),n,k; while(T--) {
    		n=read(),k=read();
    		if(n<k*k || (n-k)&1) puts("NO");
    		else puts("YES");
    	} //别忘了,k*k会爆int,开上 long long
    	return 0;
    }
    
    
  • 相关阅读:
    block: cfq 学习01
    SAS,SATA普及文档
    如何查看盘的类型
    [转载] Linux Futex的设计与实现
    C++ std::map的安全遍历并删除元素的方法
    我的vimrc配置
    .vimrc
    RC: blkio throttle 测试
    LTTng
    基于ADL5317的雪崩光电二极管(APD)偏压控制/光功率监测电路的设计
  • 原文地址:https://www.cnblogs.com/bifanwen/p/12557524.html
Copyright © 2011-2022 走看看