博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《剑指offer》-前n项和不准用通解和各种判断
阅读量:5923 次
发布时间:2019-06-19

本文共 520 字,大约阅读时间需要 1 分钟。

题目描述

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

这题目简直没事找事...为啥这么说,因为没有限制的话用等差数列求和公式直接算出结果,有限制的话是希望用递归的思想来做。但是明明有通式了还用递归做,又傻又费内存。

换个思路,先取log再e回去,这样避免了乘法。除法的话因为只需要除以2,那就用移位操作。

提交发现有小数的坑,需要+0.5再取整。

class Solution {public:    int Sum_Solution(int n) {        //return n*(n+1)/2;        return multi(n, n + 1) >> 1;    }    int multi(int a, int b){        // we can guarantee that both a and b is positive integers        int res = int(pow(10, log10(a) + log10(b))+0.5);        return res;    }};

转载地址:http://hwavx.baihongyu.com/

你可能感兴趣的文章
2017中国互联网大会正在召开
查看>>
如何取消或定制当点击GridView 的时候出现的那个黄色背景
查看>>
算年龄
查看>>
SpringMVC解析1-使用示例
查看>>
在Mac pro上如何配置adb命令?
查看>>
WML学习(1)
查看>>
命令行fuck神器
查看>>
4星|《财经》2018年第1期:气荒困境何解
查看>>
Java/JDK安装教程手册(正规图文全流程)、运行、环境配置
查看>>
介绍遍历子表的方法
查看>>
iOS内存暴增问题追查与使用陷阱
查看>>
linux网络编程----->高并发--->多线程并发服务器
查看>>
字蛛(font-spider)让你爱上 @font-face 网页自定义字体
查看>>
Linux - 文件的分割(split)与合并(cat)
查看>>
第二章--(第十单元)--selinux
查看>>
Linux文件系统只读Read-only file system
查看>>
我们需要有同理心的人工智能设备,懂我们的喜怒哀乐吗?
查看>>
解决SQL Server不允许进行远程连接问题
查看>>
php中curl模拟post提交多维数组
查看>>
优化数据库大幅度提高Oracle的性能
查看>>