サルベジオン問題

多倍長整数演算の実装

largeNumberクラスの定義

	// wrapper of std::string
	char operator[](unsigned int i) const {
		return rawString[i];
	}
	unsigned int length() const {
		return (unsigned int)rawString.length();
	}
	// align the string
	void alignDigits(std::string& leftString, std::string& rightString) const;
	// subtraction operation
	const largeNumber operator -(const class largeNumber& right) const;
	// add operation
	const largeNumber operator +(const class largeNumber& right) const;
	// divide operation
	largeNumber& divide2();
	// add operation
	largeNumber& operator +=(const largeNumber& right){
		*this = *this + right;
		return *this;
	}
	// substitution
	largeNumber& operator =(const largeNumber& a){
		rawString = a.rawString;
		return *this;
	}
	// comparison operator
	bool operator != (const largeNumber& right) const {
		return !(*this == right);
	}
	// comparison operator
	bool operator == (const largeNumber& right) const {
		return rawString == right.rawString;
	}
	// comparison operator
	bool operator < (const largeNumber& a) const;
	std::string getString() const {
		return rawString;
	}

private:

	// container of the actual index/key/value
	std::string rawString;

}; }}

工夫点

db1番からKEYを見つけ出す

まずは中を覗いてみる

考えてみる

実装

} }}

db2番からKEYを見つけ出す

まずは中を覗いてみる

考えてみる

ちょっとだけ解説

実装

感想


添付ファイル: filealignDigits.png 852件 [詳細] filedb1-result.png 909件 [詳細] filedb2-key-simple.png 930件 [詳細] filedb2-key-tree.png 880件 [詳細] filestoreAndCompute.png 825件 [詳細] filetree.png 923件 [詳細] filetreeSearch.png 903件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-06-23 (火) 10:06:57