题目描述

对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M。

例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。

输入输出格式

输入格式:

包含一个整数的单独一行给出M的值(10 <= M <= 2,000,000)。

输出格式:

每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。

输入输出样例

输入样例#1:

combo.in
10000
输出样例#1:

combo.out
18 142
297 328
388 412
1998 2002

代码

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
int m,x,y;
bool can(double x)//判断是否为整数,就不讲了,应该能看懂
{
if((int)x==x) return true;
else return false;
}
int main()
{
scanf("%d",&m);
double h;
for(int i=;i<=m/;i++) //枚举x
{
h=sqrt(*m+(i-0.5)*(i-0.5))-0.5; //这就是推出的公式
if(can(h)) printf("%d %d\n",i,(int)h);
}
return ;
}

抄来的直接看题解就好

连题解也是转载的QAQ

给出M,有等差数列求和公式得:设区间[x,y]上M=(x+y)*(x-y+1)/2 顺便提一下 x-y+1 为自然数个数

化简得到 y方-y=x方+x-2*M;进一步两边同时加一个1/4 可得 (y-1/2)方=(x+1/2)方-2*M;

于是两边开方 有y=根号下((x+1/2)方-2*M)+1/2;

那么我们就枚举x i=1;i<=M/2;i++ 因为至少是两个数相加所以枚举到一半即可;

可以算出每一个x对应的y 只需判断其是否为整数 如果是那么合题输出一组;

洛谷 P1147 连续自然数和 Label:等差数列的更多相关文章

  1. 洛谷 P1147 连续自然数和

    洛谷 P1147 连续自然数和 看到dalao们的各种高深方法,本蒟蒻一个都没看懂... 于是,我来发一篇蒟蒻友好型的简单题解 #include<bits/stdc++.h> using ...

  2. 洛谷P1147 连续自然数和 [2017年6月计划 数论01]

    P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以 ...

  3. 洛谷——P1147 连续自然数和

    P1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所以 ...

  4. 洛谷 P1147 连续自然数和 题解

    P1147 连续自然数和 题目描述 对一个给定的自然数MM,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为MM. 例子:1998+1999+2000+2001+2002 = 100001 ...

  5. 洛谷P1147 连续自然数和 题解 枚举

    题目链接:https://www.luogu.com.cn/problem/P1147 题目大意: 给你一个数 \(M\) ,求有多少对连续自然数对之和为 \(M\),输出这列连续自然数对的首项和末项 ...

  6. 洛谷P1147 连续自然数和【二分】

    题目:https://www.luogu.org/problemnew/show/P1147 题意: 给定一个数m,问有多少个数对$(i,j)$,使得$i$到$j$区间的所有整数之和为m.输出所有的解 ...

  7. 洛谷P1147 连续自然数和

    https://www.luogu.org/problem/P1147 #include<bits/stdc++.h> using namespace std; int main(){ i ...

  8. 洛谷 P1147 连续自然数和 (滑动窗口)

    维护一个滑动窗口即可 注意不能有m到m的区间,因为区间长度要大于1 #include<cstdio> #define _for(i, a, b) for(int i = (a); i &l ...

  9. P1147连续自然数和

    洛谷1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所 ...

随机推荐

  1. Populating Next Right Pointers in Each Node

    这题代码简单,不过不容易想到. void connect(TreeLinkNode *root) { if (root == nullptr ||root->left==nullptr)retu ...

  2. HDOJ 1162

    Eddy's picture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. HDOJ 1874

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  4. css+div绝对定位

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  5. 在eclipse中进行Struts2项目的配置

    Struts2是一个比较出色的基于MVC设计模式的框架,是由Struts1和WebWork发展而来的,性能也比较稳定,现在是Apache软件基金会的一个项目,下面就来配置Struts2进行初始化的开发 ...

  6. 利用FFmpeg生成视频缩略图 2.1.6

    利用FFmpeg生成视频缩略图 1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/build ...

  7. jquery记住密码,记住账号,自动登录

    1.引入jquery库 2.引入jquery.cookie.js库 3.引入操作js jsp如下: $(document).ready(function() { //输入框获得焦点-失去焦点 $(&q ...

  8. mybatis There is no getter for property named 'xx' in 'class java.lang.String

    转载自://http://www.cnblogs.com/anee/p/3324140.html 用mybatis查询时,传入一个字符串传参数,且进行判断时,会报 There is no getter ...

  9. javaweb实现验证码功能

    在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现 验证码类 public class ValiImg extends HttpSer ...

  10. JUC系列回顾之-CountDownLatch底层原理和示例

    CountDownLatch 是一个同步工具类,允许一个线程或者多个线程等待其他线程完成操作,再执行. CountDownLatch(int count) 构造一个用给定计数初始化的 CountDow ...