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;
    }
    
    
  • 相关阅读:
    C# treeView添加节点 删除节点
    xml 基础
    第一章魔兽窗口
    混合开发的框架的初步见解
    node.js的初步见解
    AngularJs的理解
    jquery属性,遍历,HTML操作
    jquery中动画效果的函数
    jquery的选择器
    js操作DOM对象及怎么获取浏览器宽高
  • 原文地址:https://www.cnblogs.com/bifanwen/p/12557524.html
Copyright © 2011-2022 走看看