判断给定的整数n能否表示成连续的m(m>1)个正整数之和
#include<stdio.h>
int main(){
//如果是奇数,肯定满足条件
int num;
scanf("%d",&num);
if(num%==){
printf("%s","YES");
return ;
}
//如果是偶数
/**
*
* 设输入的数值n为奇数,2k+1,那么奇数肯定能化成k+k+1,所以肯定是输出yes。
如果输入的数值n为偶数,要稍微复杂些。
反证,假设这个偶数能被换成连续自然数相加形式。
那么可以有x+(x+1)+(x+2)+……+(x+k) == n,
用等差数列求和公式,求出(2x+k)(k+1)/2 == n,
若k+1为偶数,则2x+k为奇数,若k+1为奇数,则2x+k为偶数,所以必定有一奇数和一个偶数。
我们把公式转换成(2x+k)(k+1) == 2n,因为2n是偶数,左边(2x+k)(k+1)一定有一个数值为偶数。
等式两边不断提取因数2,如果2n可以不断提取因数2化成2^m,也就是2的幂,而等式的左边因为存在一个奇数,(2x+k)(k+1)是不能化成2^m。所以式子两边不可能相等。所以2的幂是不能转换成连续自然数相加的形式。
但是没有直接证明偶数可以拆成什么具体形式。所以这题只是钻了题目的空子,同类型的题目好像还要输出连续自然数的序列。所以这题可以直接判定n是否为2的幂即可。
* */
if((num & (num-))==){
printf("%s","NO");
}else{
printf("%s","YES");
}
return ;
}
tips:断给定的整数n能否表示成连续的m(m>1)个正整数之和.
判断给定的整数n能否表示成连续的m(m>1)个正整数之和的更多相关文章
- [CodeWars][JS]如何判断给定的数字是否整数
问题描述: We are asking for a function to take a positive integer value, and return a list of all positi ...
- for循环练习题(1 ,判断任意一个数是91的多少倍 2,编写程序实现给定一个整数判断它从0到这个整数中间出现多少次9的次数)
1 //判断任意一个数是9的多少倍 #include <stdio.h> #include <stdlib.h> int main() { printf("请输入任意 ...
- 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数
1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
- 五种js判断是否为整数(转)
五种js判断是否为整数类型方式 作者:snandy 这篇文章主要介绍了五种JavaScript判断是否为整数类型方式,需要的朋友可以参考下 这篇看看如何判断为整数类型(Integer),JavaS ...
- 给定一个整数,求解该整数最少能用多少个Fib数字相加得到
一,问题描述 给定一个整数N,求解该整数最少能用多少个Fib数字相加得到 Fib数列,就是如: 1,1,2,3,5,8,13.... Fib数列,满足条件:Fib(n)=Fib(n-1)+Fib(n- ...
- SDUT OJ 数据结构实验之图论十:判断给定图是否存在合法拓扑序列
数据结构实验之图论十:判断给定图是否存在合法拓扑序列 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Prob ...
- SDUT 2129 树结构练习——判断给定森林中有多少棵树
树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 众 ...
- ES6-数字操作,判断是否是整数,判断最大值最小值
S中只有一种类型数,即64位(1bit 的符号位,11bits 的指数部分 ,以及52bits 的小数部分)双精度浮点数,当整数数值过大时,就会发生精度丢失. 所谓安全整数即能够唯一确定的数字,即能够 ...
随机推荐
- 微信小程序---密码输入
设计支付密码的输入框 效果如下: 源码:github地址:https://github.com/fiveTree/-_- 干货: <view class="pay"> ...
- Python 多线程Ⅱ
线程模块 Python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁. threading 模块提供的其他方法: threadi ...
- js 获取两个数组的交集,并集,补集,差集
https://blog.csdn.net/piaojiancong/article/details/98199541 ES5 const arr1 = [1,2,3,4,5], arr2 = [5, ...
- yii学习笔记(四)
return $this->goBack(); // 先看看Yii::$app->user->returnUrl是否已经设置, returnUrl没有设置且goBack()中的参数也 ...
- [Mysql]过大sql文件导入过慢问题解决
控制 MySQL 磁盘写入策略 以及 数据安全性 的两个关键参数: innodb_flush_log_at_trx_commit 和 sync_binlog 参数:innodb_flush_log_a ...
- 分析 JUnit 框架源代码
本文转载至http://www.ibm.com/developerworks/cn/java/j-lo-junit-src/ 分析 JUnit 框架源代码 理解 JUnit 测试框架实现原理和设计模式 ...
- html2canvas 使用指南
html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); }); 属性参数: http ...
- CDOJ 1256 打表+数组 统计
昊昊爱运动 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- jQuery文档操作之删除操作
remove() 语法: $(selector).remove(); 解释:删除节点后,事件也会删除(简言之,删除了整个标签) $("ul").remove(); detach() ...
- 微信小程序_(表单组件)checkbox与label
微信小程序组件checkbox官方文档 传送门 微信小程序组件label官方文档 传送门 Learn 一.checkbox组件 二.label组件与checkbox组件共用 一.checkbox组件 ...