巨大な数
今後のために残しておく。ただの備忘録です。
#include <cstdio> #include <cstdlib> using namespace std; class CLongNum{ private: int m_length; int* m_data; public: CLongNum(int l_):m_length(l_){ m_data = new int[m_length]; reset(); } ~CLongNum(){ delete[] m_data; } void reset(){ for(int i=0; i < m_length; i++){ (*this)(i) = 0; } } int & operator()(int index_){ if(index_ < m_length){ return m_data[index_]; } } CLongNum operator+(CLongNum& adder_){ CLongNum ans(m_length); for(int i=0; i < m_length; i++){ ans(i) = (*this)(i) + adder_(i); if(ans(i) > 9){ ans(i+1) += 1; ans(i) -= 10; } } return ans; } CLongNum & operator+=(CLongNum & adder_){ for(int i=0; i < m_length; i++){ (*this)(i) = (*this)(i) + adder_(i); if((*this)(i) > 9){ (*this)(i+1) += 1; (*this)(i) -= 10; } } return (*this); } void put(){ for(int i=0; i < m_length; i++){ printf("%d", m_data[m_length-i-1]); } printf("\n"); } }; int main(){ CLongNum* n = new CLongNum(100); CLongNum* adder = new CLongNum(100); freopen("input.txt", "r", stdin); for(int i=0; i < 100; i++){ char st[51]; scanf("%s", st); adder->reset(); for(int j=0; j < 50; j++){ (*adder)(50-j-1) = st[j] - '0'; } adder->put(); (*n) += (*adder); } n->put(); delete n; delete adder; return 0; }