【47】求1+2+3+…+n
- 時間限制:1秒
- 空間限制:32768K
題目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、
case等關鍵字及條件判斷語句(A?B:C)。
牛客網題目練級點選這裡
發散思維
**************************************************************/
#include<iostream>
using namespace std;
//方法一: 用類的靜态成員和構造函數
class Temp{
public:
Temp(){ ++N; Sum+=N;}
static void Reset(){N=; Sum=;}
static unsigned int GetSum(){ return Sum;}
private:
static unsigned int N;
static unsigned int Sum;
};
unsigned int Temp::N=; //靜态資料成員在類外進行一次初始化
unsigned int Temp::Sum=;
class Solution {
public:
int Sum_Solution(int n) {
Temp::Reset(); //可以用類對靜态函數進行直接調用。初始化。
Temp* a=new Temp[n]; //建立n個類,每個類調用一次構造函數
delete[] a; //銷毀指針數組空間。
a=NULL;
return Temp::GetSum(); //傳回靜态成員結果
}
};
知識點:
靜态成員
- 不可在類體内進行指派,因為它是被所有該類的對象所共享的。
- 你在一個對象裡給它指派,其他對象裡的該成員也會發生變化。為了避免混亂,是以不可在類體内進行指派。
- 靜态資料成員不能在類中初始化.因為靜态資料成員為類的各個對象共享,否則每次建立一個類的對象則靜态資料成員都要被重新初始化。它在對象中不占用存儲空間,這個屬性為整個類所共有,不屬于任何一個具體對象。
- 靜态成員的值對所有的對象是一樣的。靜态成員可以被初始化,但隻能在類體外進行初始化。
-
各個對象都擁有類中每一個普通資料成員的副本,但靜态資料成員隻有一個執行個體存在,與定義了多少類對象無關。
靜态函數成員
- 必須通過對象名來通路非靜态資料成員。
- 另外,靜态成員函數在類外實作時候無須加static關鍵字,否則是錯誤的。
-
非靜态成員函數可以任意地通路靜态成員函數和靜态資料成員。
http://blog.csdn.net/clc4210408/article/details/6775824
虛函數繼承在記憶體中詳解:
http://www.cnblogs.com/jerry19880126/p/3616999.html
-
牛客網通過圖檔
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM3gTOzUzMyITOwgDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)