これは楽だ。
#include <iostream> using namespace std; int main(int argc, char **argv) { int n = 123456789; string s = to_string(n); int m = stoi(s); cout << s << endl; // 123456789 cout << m << endl; // 123456789 return 0; }
#include <iostream> using namespace std; int main(int argc, char **argv) { int n = 123456789; string s = to_string(n); int m = stoi(s); cout << s << endl; // 123456789 cout << m << endl; // 123456789 return 0; }
#include <iostream> #include <cassert> using namespace std; long long sigma(long long x) { long long ret = 1; for (long long i = 2; i * i <= x; i++) { if (x % i) continue; long long p = i; while (x % i == 0) { p *= i; x /= i; } ret *= (p - 1) / (i - 1); } if (x > 1) ret *= (x * x - 1) / (x - 1); return ret; } // for debug use only long long slowerSigma(long long x) { long long ret = 0; for (long long i = 1; i * i <= x; i++) { if (x % i) continue; ret += i; if (i * i != x) ret += x / i; } return ret; } int main(int argc, char **argv) { // test for (int i = 1; i < 1000000; i++) { assert(sigma(i) == slowerSigma(i)); } for (;;) { long long x; cin >> x; if (x == -1) break; cout << sigma(x) << endl; } return 0; }
long long sigma(long long x) { long long ret = 1; for (long long i = 2; i * i <= x; i++) { long long p = 1; while (x % i == 0) { p = p * i + 1; x /= i; } ret *= p; } if (x > 1) ret *= x + 1; return ret; }
int main() { ThirdPartysContainer<string> container; container["hoge"] = "fuga"; cout << container["hoge"] << endl; return 0; }のようにbraketsで要素にアクセスすることができるThirdPartyContainerという(key, value)型のクラスが提供されていた。
int main() { ThirdPartysContainer<string> container; container.set("hoge", "fuga"); cout << container.get("hoge") << endl; return 0; }で、ThirdPartyContainerクラスを使っている箇所を新しいAPIを使うように書き換えろと。
template <typename T> class ThirdPartysContainerWrapper { ThirdPartysContainer<T> contaier; public: T getData(const string key) { return contaier[key]; } void setData(const string key, const T val) { contaier[key] = val; } };みたいなクラスを作っておいて、個別のクラスからは、
int main() { ThirdPartysContainerWrapper<string> container; container.setData("hoge", "fuga"); cout << container.getData("hoge") << endl; return 0; }のような使い方をするようにしておけば、改修箇所はラッパークラスだけでよかったのになと。