fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. template<int base>
  5. std::string funkyadd(std::string a, std::string b)
  6. {
  7. if (a.size() < b.size()) return funkyadd<base>(b, a);
  8.  
  9. for ( int i = a.size() - 1, c = 0, d = a.size() - b.size(); (i >= 0) || c; i--)
  10. !((i < 0) && c && a.insert(0, "1").empty()) && (c = (a[i] += ((i >= d) ? b[i - d] - '0' : 0) + c) > ('/' + base)) && (a[i] -= base);
  11.  
  12. return a;
  13. }
  14.  
  15. int main()
  16. {
  17. std::cout << funkyadd<2>("101101001001010", "101010101101010") << std::endl;
  18. }
Success #stdin #stdout 0s 2964KB
stdin
Standard input is empty
stdout
1010111110110100