任意给一个正整数N,写出N可以表示成连续自然数加和的所有可能。。

比如,输入整数253.

253=126+127

253=18+19+。。+28

253=1+2+。。22

经分析,

i为奇数时候,if(N%i)==0,则N可以写成连续i个数相加

i为偶数时候,if(N%i)==i/2,则N可以写成连续i个数相加。

代码如下:

#include "stdafx.h"
#include<iostream>
#include<stdio.h>
#include<malloc.h>
#include"myheader.h"
using namespace std;


//BOP 2.21

void ContinuePlus(int num)
{
    for(int i=2;i<num/2;i++)
    {
        if( i % 2 == 1 && num%i == 0)
        {
            if(num/i-i/2>0)
            {
                cout<<(num/i-i/2)<<" ~ "<<(num/i+i/2)<<endl;
            }
        }
        if( i % 2 == 0 && num%i == i/2)
        {
            if(num/i-i/2+1>0)
            {
                cout<<(num/i-i/2+1)<<" ~ "<<(num/i+i/2)<<endl;
            }
        }
        
    }
}


void main()
{
    ContinuePlus(253);//参数输入整数N
}

问题2:

2^N不行,根据上面的性质。

问题3:…还没懂,囧

转载请标明:http://www.cnblogs.com/Dzhouqi/p/3616628.html

相关文章:

  • 2022-12-23
  • 2021-07-22
  • 2022-01-19
  • 2021-11-12
  • 2022-12-23
  • 2021-05-17
  • 2021-10-22
猜你喜欢
  • 2021-08-20
  • 2021-12-26
  • 2022-12-23
  • 2021-10-01
  • 2022-02-07
  • 2021-10-29
  • 2022-02-20
相关资源
相似解决方案