44.1+2+3+...+n
来源:互联网 发布:苹果手机默认软件 编辑:程序博客网 时间:2024/05/23 14:00
求1+2+3+...+n
- 参与人数:2683时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
求1+2+3+...+n除了用公式n( n + 1 ) / 2之外,无外乎循环和递归,由于明确限制for和while的使用,循环已经不能用了,递归需要用if来判断出口条件,题目同样不允许使用。
我们可以先定义一个类型,接着创建n个该类型的实例,那么这个类型的构造函数会被执行n次,可以将累加的相关代码写在构造函数里。
// 44.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"class Solution {public:class StaticTmp{public:StaticTmp(){++n;sum += n;}static void reset(){n = 0;sum = 0;}static int getNum(){return sum;}private:static unsigned int n;static unsigned int sum;};public:int Sum_Solution(int n) {StaticTmp::reset();StaticTmp* tmp = new StaticTmp[n];return StaticTmp::getNum();}};unsigned int Solution::StaticTmp::n = 0;unsigned int Solution::StaticTmp::sum = 0;int _tmain(int argc, _TCHAR* argv[]){Solution s;int result = s.Sum_Solution(100);return 0;}
我在Solution类里面定义了StaticTmp类,这种类中类的写法并不稀罕,在其他工程中见过,注意StaticTmp类的静态成员变量必须在StaticTmp类的外面初始化,编译器对静态成员变量的初始化要求非常严格,n和sum被声明为unsigned int,那么初始化必须是unsigned int,下面这种写法是错误的
int Solution::StaticTmp::n = 0; int Solution::StaticTmp::sum = 0;编译器不会做类型转换。
第二次做:
class Solution {class Tmp {public:Tmp() { ++n ; sum += n ; }static int getSum() { return sum ; }static void reset() { sum = 0 ; n = 0 ; }static unsigned int n;static unsigned int sum ;} ;public:int Sum_Solution(int n) {Tmp::reset() ;Tmp* arr = new Tmp[n] ;int result = Tmp::getSum() ;delete[] arr ;return result ;}};unsigned int Solution::Tmp::sum = 0 ;unsigned int Solution::Tmp::n = 0 ;
第三次做:
class Solution { class tmp { public : tmp() { ++ n ; sum += n ; } static void reset() { n = 0 ; sum = 0 ; } static int getSum() { return sum ; } private : static int sum ; static int n ; } ;public: int Sum_Solution(int n) { tmp::reset() ; tmp* arr = new tmp[n] ; int sum = tmp::getSum() ; return sum ; }};int Solution::tmp::sum = 0 ;int Solution::tmp::n = 0 ;
第三次做:
class Solution {public: int Add(int num1, int num2) {int sum ; int carray ; do { sum = num1 ^ num2 ; carray = ( num1 & num2 ) << 1 ; num1 = sum ; num2 = carray ; } while ( num2 != 0 ) ; return sum ; }};
0 0
- 44.1+2+3+...+n
- n=100,用递归实现:n-(n-1)+(n-2)-(n-3)........2-1;
- zoj 3175 Number of Containers (nbut1375) 计算n /1+n/2+n/3+n/4....+n/n
- count(n)=1!+2!+3!+.....+n!
- 1+2+3+...+n
- 1!+2!+3!+......+n!
- 1+2+3+......+n
- 1+2!+3!+...n!
- 1+2+3+....+n
- 1!+2!+3!+.....+n!
- f(n)=f(n-1)+2*f(n-2)+3f(n-3)
- 算法运行时间1、logN、N、NlogN 、N^2、N^3、2^n之间的比较
- 1000ms n!和2^n,n^3,n^2时间复杂度dev运行时间
- 算法运行时间1、logN、N、NlogN 、N^2、N^3、2^n之间的比较
- 求值:1!/n+3!/n*n*n+5!/n*n*n*n*n+....k!/n*n*n*n....n*n(有k个n);
- 算法常用的时间复杂度(log(n),sqrt(x),n,n*log(n),n^2,n^3,2^n)的函数坐标图
- 输出n! n为用户输入的一个正整数 n! = n*(n-1)*(n-2)*...*1 5! = 5*4*3*2*1 = 120
- 1*1+2*2+3*3+++++++++n*n(用递归
- Android自定义View的实现方法,带你一步步深入了解View(四)
- [BZOJ3643] phi的反函数 - 欧拉函数 - dfs
- 几何基础知识点
- 关于两种头文件包含及其解决办法
- Android --中间突出的底部导航栏布局简单实现
- 44.1+2+3+...+n
- 突出显示当日的c++日历代码
- Google学术上不去,几个替代网址
- C#网络编程 (二) 数据流的类型和应用
- /usr/texbin/pdflatex 不存在。
- leetcode No344.Reverse String Note
- Oracle忘记user密码操作 查询DBA权限
- Mongoose
- shell 中的export作用(转载)