连续整数的和(51Nod-1138)
题目
给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。
输入
输入1个数N(3 <= N <= 10^9)。
输出
输出连续整数中的第1个数,如果有多个按照递增序排列,如果不能分解为若干个连续整数的和,则输出No Solution。
输入样例
15
输出样例
1
4
7
思路:
设若干连续数字和的首项为 a,则有:a+(a+1)+(a+2)+...+(a+k)=n,共有 k 项
即:
化简有:
由于 a 最小为 1,那么当 a=1 时有:
因此,
故而从 开始枚举到 3,当 i 满足 时,输出 即可
源程序
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
const int MOD = 1E9+7;
const int N = 50000+5;
const int dx[] = {-1,1,0,0};
const int dy[] = {0,0,-1,1};
using namespace std;int main() {int n;scanf("%d",&n);int flag=false;for(int i=sqrt(2.0*n);i>=2;i--){if((n-i*(i-1)/2)%i==0){printf("%d\n",(n-i*(i-1)/2)/i);flag=true;}}if(!flag)printf("No Solution\n");return 0;
}
连续整数的和(51Nod-1138)相关推荐
- 51nod 1138 连续整数的和(数学公式)
1138 连续整数的和 #include <iostream> #include <cmath> #include <cstdio> using namespace ...
- 51NOD 1138 连续整数的和
点击打开链接 给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2). 例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8. 如 ...
- 51nod 1617 奇偶数组
传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...
- 51NOD 1773:A国的贸易——题解
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...
- C语言接收一个整数划分成5的倍数,整数划分为连续整数;整数划分
参考博客:http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1192308.html 1.整数划分为连续整数: 如将15划分为连续整数之和: 15 ...
- 51nod 1040:最大公约数之和(数论)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 给出一个n,求1-n这n个数,同n的最大公约数的和. ...
- 1138: 零起点学算法45——求最大值
1138: 零起点学算法45--求最大值 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lld Submitted: 1691 ...
- (DP)51NOD 1183 编辑距离
编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...
- 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)
二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...
- 51Nod 1003 阶乘后面0的数量(数学,思维题)
1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720 ...
最新文章
- 安全狗深圳主题沙龙会:企业如何打造云安全堡垒
- AWS上的实例无法ping通的解决方案
- 修改jceks.key.serialFilter解决KMS重启后Can‘t recover key for testkey from keystore file
- “心脏出血”后,OpenSSL 起死回生靠什么?
- PyTorch学习—23.PyTorch的基本使用
- 如何在Mac上创建和使用符号链接?
- 三角形状的点阵模糊效果iOS源码
- 5、Python-函数
- 运用HTML5进行文字排版详解
- php easyui filebox,filebox(文件框)
- SPR:SUPERVISED PERSONALIZED RANKING BASED ON PRIOR KNOWLEDGE FOR RECOMMENDATION
- 国内外最顶级的12大看板工具
- 战疫内外,京东智联云如此“一鸣惊人”!
- XCTF-PWN welpwn
- 【深度学习】步态识别-论文阅读:(T-PAMI-2021)综述:Deep Gait Recognition
- 这几天,聊到的最多的就是互通有无
- “将‘const NSString *‘发送到‘NSString *‘类型的参数会丢弃限定符”警告
- 谷歌收购摩托罗拉乱弹
- 经历考研失败后如何找到心仪的工作
- CFA一级学习笔记--权益(六)--权益类证券概述