您的位置:首页 > 职场人生

编程之美 2.21 只考加法的面试题

2014-03-21 19:59 204 查看
任意给一个正整数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:…还没懂,囧

转载请标明:/article/7071065.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: