连续整数的和(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 ...
最新文章
- 带进度条的ASP无组件断点续传下载代码
- How To Open An URL In Android’s Web Browser
- 2048游戏-AI程序算法分析
- SQL中的CASE WHEN用法
- Flex与.NET互操作(四):使用HttpService、URLReqeust和URLLoader加载/传输数据
- 一个控制器怎么转发到另外一个控制器_楼宇自动化系统(BAS),DDC,一个最核心的控制器...
- bundle文件解压_通过sourcemap解压缩webpack 实战
- jquery getjson php,jquery中调用php json函数的方法分享
- android 平板怎么截图,平板电脑怎么截图 平板电脑截图方法【详解】
- WindowServer2003中IIS6.0允许运行32位程序
- Convert to RINEX安装及简单使用
- 华为交换机初始化_华为交换机初始设置
- 华为连接wifi显示wifi未连接服务器,华为手机连接WIFI但是无法上网怎么解决
- 跑步时戴什么耳机好、最适合跑步用的耳机
- 《人工智能及其应用》练习题
- 渲染性能优化之Culling 剔除
- 百度BML飞桨训练营(十)面部表情迁移PaddleGAN--蒙娜丽莎在微笑
- Java 进程启停及诊断 Jarboot大改版、焕然一新
- DNS提示错误无法上网怎么办?苹果电脑如何修改DNS?
- python pyttsx3实现文字朗读