zoukankan      html  css  js  c++  java
  • luogu P1147 连续自然数和

    题目描述

    对一个给定的自然数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>
    
    using namespace std;
    
    int main() {
        int i;
        double M,n;
        cin>>M;
        for(i=2000; i>=2; i--) 
        {
            n=M/i;
            if(!(n-((int)n/1)))
            if(i%2)
            if((n-(i-1)/2)>0)
            cout<<(int)(n-(i-1)/2)<<" "<<(int)(n+(i-1)/2)<<endl;
            if((n-((int)n/1))==0.5)
            if((n-0.5-(i-2)/2)>0)
            cout<<(int)(n-0.5-(i-2)/2)<<" "<<(int)(n+0.5+(i-2)/2)<<endl;
        }
        return 0;
    }
  • 相关阅读:
    HTTPS的七个误解(译文)
    WebLogic 11g重置用户密码
    IT项目管理工具
    Encrypt and Decrypt
    Tomcat Introduction
    浅谈https\ssl\数字证书
    What is POID
    数字签名和数字证书
    Apache Axis2 Practice
    Web Performance Tips
  • 原文地址:https://www.cnblogs.com/sssy/p/7100759.html
Copyright © 2011-2022 走看看