将一个自然数分解成几个连续自然数之和
来源:互联网 发布:淘宝买护肤品靠谱吗 编辑:程序博客网 时间:2024/06/05 00:25
假设,拆分成的数列为:m+1, m+2, … m+k
则 n = (m + m + k - 1) * k / 2 或2*n = (2*m + k + 1) * k
以下程序就是从2开始到n逐个看是不是可以被2*n整除,如果是,
则看两个除数能不能分解出m和k,如果可以,则输出,
并将k置位,以后不再重复输出有k个连续自然数的序列
#include <iostream>
#include <vector>
void Split(int data)
{
int data1=data*2;
vector<int> flag(data,0);
cout<<data<<endl;
int divisor=2;
while(divisor*2<data)
{
if(data1%divisor==0)
{
int divisor1=data1/divisor;
int divisor2=divisor;
int divisor3=divisor1;
if(divisor1>divisor)
{
int tmp=divisor1-divisor-1;
if(tmp%2==0)
{
int m=tmp/2;
if(flag[divisor]==0)
{
for(int i=1;i<=divisor;i++)
cout<<m+i<<" ";
flag[divisor]=1;
cout<<endl;
}
}
}
else
{
int tmp=divisor-divisor1-1;
if(tmp%2==0)
{
int m=tmp/2;
if(flag[divisor1]==0)
{
for(int i=1;i<=divisor1;i++)
cout<<m+i<<" ";
flag[divisor1]=1;
cout<<endl;
}
}
}
}
divisor++;
}
}
int main()
{
int n;
cin>>n;
Split(n);
return 1;
}
- 将一个自然数分解成几个连续自然数之和
- 正整数分解为几个连续自然数之和
- 正整数分解为几个连续自然数之和
- 正整数分解为几个连续自然数之和
- 正整数分解为几个连续自然数之和
- 将整数分解为连续自然数之和
- 将一个数字表示成连续自然数之和的形式
- 【编程练习】正整数分解为几个连续自然数之和
- SACU 判断一个数能否分解为几个连续自然数之和
- 将整数分解成为连续的自然数之和
- 将整数分解成为连续的自然数之和
- 将一个正整数分解为连续的自然数的和
- 将一个正整数n,拆分成连续的自然数之和,输出所有可能的情况
- 连续自然数之和
- poj2140 连续自然数之和
- 一个数的分解连续的自然数
- 整数分解成连续自然数之和问题(《编程之美》2.21节)研究
- 只考加法的面试题——将一个正整数表示成连续的自然数序列之和
- 新做的页面框架
- 软件测试常用术语表
- ubuntu10.10 Qt creater安装 亲测可用(转)
- ZOJ3432 Find the Lost Sock,异或运算
- 编译Cocos2d-x的HelloWorld
- 将一个自然数分解成几个连续自然数之和
- linux下全目录全文搜索强大工具grep
- JQuery的学习(初步)
- learning jQuery 学习笔记十二(+jQuery 1.4.1 API)-- DOM操作-基于命令改变页面 ----包装元素
- 半边结构
- ARM开发板上实现湿温度远程控制系统
- 关于在PACKAGE里看LOG
- 第三章:Creating Applications and activities-概述
- SRVPGM BNDDIR建立