IT会社100題-12-1+2+...+nを求めます

720 ワード

問題の説明:
1+2+…+nを求めて、乗除法、for、while、if、else、switch、caseなどのキーワードと条件判断文(A?B:C)を使うことができないことを要求します.
 
分析:
クラスの静的変数を使用して実装:
newはn個のこの種類の配列を含むと、クラスの構造関数がn回呼び出される.
 
コード実装:
// 12.cc
#include <iostream>
using namespace std;

class Object {
public:
	Object() {
		++N;
		Sum += N;
	}
	static void reset() { N = 0; Sum = 0; }
	static int get_sum() { return Sum; }

private:
	static int N;
	static int Sum;
};

int Object::N = 0;
int Object::Sum = 0;

int sum(int n) {
	Object::reset();

	Object* a = new Object[n];

	delete []a;
	a = 0;

	return Object::get_sum();
}

int main() {
	int n = 10;
	cout << "The sum is: " << sum(n) << endl;
	return 0;
}