《编程之美》读书笔记(十二):“只考加法的面试题”
[question]
我们知道:1+2=3;
4+5=9;
2+3+4=9;
等式左边都是两个以上连续的自然数相加,那么是不是所有的整数都可以写成这种形式呢?
写一个程序,对于一个32位正整数,输出它所有的连续自然数之和的算式。
[analysis]
可以发现任意自然数序列其实是公差为1的等差数列,那么数列前N项和公式有a1*n +n*(n-1)/2 = sn,而这里sn = 输入的正整数input。通过分析a1只需在集合[1,input/2)中,把上式等效变形为n2+(2a1-1)n-2input = 0,n的取值为中学学得2a分之负b加减根号下b方减4ac,哈,如果n为一个正整数,那么符合条件输出。如何判断n为合法的正整数不是浮点数呢?看看我的solution吧。我算法的时间复杂度是O(N)线形级别的,不知哪位大虾的solution可以再快些。
[answer-programme]
#include "stdafx.h"
#include <math.h>
#include <iostream.h>
bool isPositiveInt(float num)
{
return (num - (int)num)==0?true:false;
}
void outputResult(int a1,float n,int input)
{
int loopCounter = 1;
int a = a1;
cout<<a1;
while(loopCounter<(int)n)
{
cout<<"+"<<a1+loopCounter++;
}//while
cout<<"="<<input<<endl;
}
int main(int argc, char* argv[])
{
unsigned int input,i;
//input any positive numbers you want to calculate with
cout<<"input any positive numbers you want to calculate with:"<<endl;
cin>>input;
//O(n)
cout<<endl<<"the possible data groups are"<<endl;
float temp;
for(i=1;i<=input/2;i++)
{
temp = sqrt(8*input+(i+i-1)*(i+i-1));//b*b - 4ac
temp = (1 + temp - i - i)/2;
if(isPositiveInt(temp))
{
outputResult(i,temp,input);
}
}
return 0;
}
转载于:https://www.cnblogs.com/bvbook/archive/2008/11/18/1335742.html
《编程之美》读书笔记(十二):“只考加法的面试题”相关推荐
- 编程之美 - 读书笔记 - 卖书折扣问题的贪心解法
<编程之美>读书笔记(四):卖书折扣问题的贪心解法 每 次看完<编程之美>中的问题,想要亲自演算一下或深入思考的时候,都觉得时间过得很快,动辄一两个小时,如果再把代码敲一遍的话 ...
- 《Java编程思想》读书笔记(二)
三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...
- 【Java编程思想】读书笔记(二)第六章---第十章
Java编程思想(第四版)学习笔记 第六章---第十章 第六章:访问权限控制 6.2Java访问权限修饰词 第七章:复用类 7.1 组合语法 7.2 继承语法(extends) 7.4.2名称屏蔽(重 ...
- 编程之美读书笔记2.1—求二进制数中1的个数
解法一: 可以举一个8位二进制的例子.对于二进制操纵,我们除以一个2,原来数字就会减少一个0(向右移一位).如果除的过程中有余,那么久表示当前位置有一个1. 以10100010为例: 第一次除以2时, ...
- 《Programming in Lua 3》读书笔记(十二)
日期:2014.7.14 PartⅡ Object-Oriented Programming Lua中实现面向对象编程. "如同OOP对象,table拥有状态:如同OOP对象,table拥有 ...
- 中国象棋将帅问题java_编程之美读书笔记1.2——中国象棋将帅问题
http://blog.csdn.net/pipisorry/article/details/36380669 问题:下过中国象棋的朋友都知道,双方的"将"和"帅&quo ...
- JAVA面向对象编程(孙卫琴)读书笔记(二)
九.抽象 抽象是指从特定的角度出发,把以及存在的事物抽取我们所关注的东西,形成一个新的事物的思维过程. 抽象思维在艺术和科学领域上得到了广泛的运用,例如:一幅在干旱大地突然下起大雨的抽象画,其对真实世 ...
- 编程之美读书笔记之-高效率的安排见面会
问题一: n个同学,分别对m个招聘见面会感兴趣.为了满足所有学生的要求,hr希望让每个同学都能参加自己所有感兴趣的见面会.然后每个见面会的时间为t.问如何安排见面会能够使得所有见面会总的时间最短. 建 ...
- 《java编程思想》读书笔记(二)第五章(2)
成员初始化 Java尽力保证:所有变量在使用前都能得到恰当的初始化. 对于方法的局部变量,Java会以编译时报错的形式贯彻这种保证,比如: 1 void f() 2 { 3 int i; //这里编译 ...
最新文章
- 介绍Zabbix的两种监控模式(主动模式和被动模式)
- 如何启用ruler?
- leetcode(1)---两数之和
- python制作文本编辑器_Python小实战:制作文本编辑器
- atom插件安装方法
- git push origin master 出错
- FreeMarker中文API手冊(完整)
- 腾讯2014在广州站实习生offer经验(TEG-开发背景)
- word模板生成利器poi-tl
- GMM R语言程序 gmm包的使用
- 四元数——概念以及相关数学公式 实现绕坐标轴旋转以及获取旋转角和旋转轴
- 连续多帧图像光流对齐和光流运动检测
- java 获取当天的0点和24点
- 江苏高考可以用计算机嘛,2018江苏高考计算机网上评卷考生作答须知
- kernel Damon实现
- AI学习 Day06 内置函数
- clover删除多余引导_clover如何删除无用启动项_常见问题解析,clover
- Google账户二次验证取消
- web前端开发零基础入门教程
- 南昌大学航天杯第二届程序设计竞赛校赛网络同步赛 部分题解
热门文章
- Yarn application has already ended! It might have been killed or unable to launch application master
- wine的sys文件具体位置
- windows7下面sublime中使用virtualenv切换python版本并运行
- 机器学习(三十三)——价值函数的近似表示
- python指定变量类型_Python#160;变量类型_python教程
- 家庭接入: dsl 电缆ftth 拨号和卫星_家庭宽带的路由器升级之路
- MySQL学习笔记(二):MyISAM 存储引擎
- 【前端面试】数据类型与类型检测
- Android性能调优利器StrictMode
- mybatis--MapperProxy事务