1 0 K19584500653053662232211568267 V830542486163201924733591581247 1267650600228229401496703205376
1267650600228229401496703205376
#mimetex(30 \lt \log_{10}(1267650600228229401496703205376)\approx 30.1029995.. \lt 31)
#mimetex(\log_{2}(1267650600228229401496703205376)= 100)
#geshi(c++,number=on,start=4){{ class largeNumber{ public:
// constructor largeNumber(void); // constructor largeNumber(const std::string& a); // deconstructor ~largeNumber(void);
// 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;
}; }}
#geshi(c++,number=on,start=109){{ std::cout << "target:" << targetKey << std::endl; std::cout << "key :" << key << std::endl; std::cout << "upper :" << upperBoardIndex << std::endl; std::cout << "index :" << nextIndex << std::endl; std::cout << "lower :" << lowerBoardIndex << std::endl; nextIndex = lowerBoardIndex + upperBoardIndex; nextIndex.divide2(); queryIndex(numberOfDatabase, nextIndex, key, value); std::cout << "target:" << targetKey << std::endl; std::cout << "key :" << key << std::endl; std::cout << "upper :" << upperBoardIndex << std::endl; std::cout << "index :" << nextIndex << std::endl; std::cout << "lower :" << lowerBoardIndex << std::endl; while(key != targetKey){
trialCount++; if(key < targetKey){ lowerBoardIndex = lowerBoardIndex + upperBoardIndex; lowerBoardIndex.divide2(); }else{ upperBoardIndex = lowerBoardIndex + upperBoardIndex; upperBoardIndex.divide2(); } nextIndex = lowerBoardIndex + upperBoardIndex; nextIndex.divide2(); queryIndex(numberOfDatabase, nextIndex, key, value); std::cout << "target:" << targetKey << std::endl; std::cout << "key :" << key << std::endl; std::cout << "upper :" << upperBoardIndex << std::endl; std::cout << "index :" << nextIndex << std::endl; std::cout << "lower :" << lowerBoardIndex << std::endl;
} }}
#geshi(c++){{ nextIndex = lowerBoardIndex + upperBoardIndex; nextIndex.divide2(); queryIndex(numberOfDatabase, nextIndex, key, value); while(key != targetKey){
trialCount++; if(key < targetKey){ lowerBoardIndex = lowerBoardIndex + upperBoardIndex; lowerBoardIndex.divide2(); }else{ upperBoardIndex = lowerBoardIndex + upperBoardIndex; upperBoardIndex.divide2(); } nextIndex = lowerBoardIndex + upperBoardIndex; nextIndex.divide2(); queryIndex(numberOfDatabase, nextIndex, key, value);} }}
0 633825300114114700748351602688 316912650057057350374175801344 950737950171172051122527404032 158456325028528675187087900672 475368975085586025561263702016 792281625142643375935439503360 1109194275199700726309615304704 79228162514264337593543950336 237684487542793012780631851008 396140812571321687967719751680 554597137599850363154807652352 713053462628379038341895553024 871509787656907713528983453696 1029966112685436388716071354368 1188422437713965063903159255040 39614081257132168796771975168 118842243771396506390315925504 198070406285660843983859875840 277298568799925181577403826176 356526731314189519170947776512 435754893828453856764491726848 514983056342718194358035677184 594211218856982531951579627520 673439381371246869545123577856 752667543885511207138667528192 831895706399775544732211478528 911123868914039882325755428864 990352031428304219919299379200 1069580193942568557512843329536 1148808356456832895106387279872 1228036518971097232699931230208 19807040628566084398385987584 59421121885698253195157962752 99035203142830421991929937920 138649284399962590788701913088 178263365657094759585473888256 217877446914226928382245863424 257491528171359097179017838592 297105609428491265975789813760 336719690685623434772561788928 376333771942755603569333764096 415947853199887772366105739264 455561934457019941162877714432 495176015714152109959649689600 534790096971284278756421664768 574404178228416447553193639936 614018259485548616349965615104 653632340742680785146737590272
0 633825300114114700748351602688 // 1番目のキー 316912650057057350374175801344 // 2番目のキー 950737950171172051122527404032 // 3番目のキー
0 633825300114114700748351602688 633825300114114700748351602688 316912650057057350374175801344 0 950737950171172051122527404032 633825300114114700748351602688 158456325028528675187087900672 0 475368975085586025561263702016 316912650057057350374175801344 792281625142643375935439503360 316912650057057350374175801344 1109194275199700726309615304704 316912650057057350374175801344 79228162514264337593543950336 0 237684487542793012780631851008 158456325028528675187087900672 396140812571321687967719751680 158456325028528675187087900672 554597137599850363154807652352 158456325028528675187087900672 713053462628379038341895553024 158456325028528675187087900672 871509787656907713528983453696 158456325028528675187087900672 1029966112685436388716071354368 158456325028528675187087900672 1188422437713965063903159255040 158456325028528675187087900672 39614081257132168796771975168 0 118842243771396506390315925504 79228162514264337593543950336 198070406285660843983859875840 79228162514264337593543950336 277298568799925181577403826176 79228162514264337593543950336 356526731314189519170947776512 79228162514264337593543950336 435754893828453856764491726848 79228162514264337593543950336 514983056342718194358035677184 79228162514264337593543950336 594211218856982531951579627520 79228162514264337593543950336 673439381371246869545123577856 79228162514264337593543950336 752667543885511207138667528192 79228162514264337593543950336 831895706399775544732211478528 79228162514264337593543950336 911123868914039882325755428864 79228162514264337593543950336 990352031428304219919299379200 79228162514264337593543950336 1069580193942568557512843329536 79228162514264337593543950336 1148808356456832895106387279872 79228162514264337593543950336 1228036518971097232699931230208 79228162514264337593543950336 19807040628566084398385987584 0 59421121885698253195157962752 39614081257132168796771975168 99035203142830421991929937920 39614081257132168796771975168 138649284399962590788701913088 39614081257132168796771975168 178263365657094759585473888256 39614081257132168796771975168 217877446914226928382245863424 39614081257132168796771975168 257491528171359097179017838592 39614081257132168796771975168 297105609428491265975789813760 39614081257132168796771975168 336719690685623434772561788928 39614081257132168796771975168 376333771942755603569333764096 39614081257132168796771975168 415947853199887772366105739264 39614081257132168796771975168 455561934457019941162877714432 39614081257132168796771975168 495176015714152109959649689600 39614081257132168796771975168 534790096971284278756421664768 39614081257132168796771975168 574404178228416447553193639936 39614081257132168796771975168 614018259485548616349965615104 39614081257132168796771975168 653632340742680785146737590272 39614081257132168796771975168
#geshi(c++,number=on,start=144){{ std::cout << "index :" << index << "\tkey :" << key << '\t' << targetKey << std::endl; while(key != targetKey){
trialCount++; if(key < targetKey){ index = GET_RIGHT_INDEX(index); }else{ index = GET_LEFT_INDEX(index); } queryIndex(numberOfDatabase, index, key, value); std::cout << "index :" << index << "\tkey :" << key << '\t' << targetKey << std::endl;} break; }}
#geshi(c++,number=on,start=14){{
#define GET_LEFT_INDEX(x) (x + x)
#define GET_RIGHT_INDEX(x) (x + x + largeNumber("1")) }}