Rubyはすごい?!
AOJ 0015を解いてみてRubyってすごいなと思った反面、プログラミング言語でこんなにプログラムの組み方が変わるんだなと思いました。
もともとRubyは直感的なプログラミングを求めて作られた言語だから当然と言えば当然だけど、はっきり言ってC++とRubyでコードの違いが出てしまうとmatzの手のひらの上で踊らされてる感がある。(笑)
コードです。
num = gets.to_i while num > 0 num1 = gets.to_i num2 = gets.to_i ans = num2+num1 if ans >= 10**80 then puts "overflow" else puts ans end num = num - 1 end
#include <iostream> #include <string> #include <stack> using namespace std; int changeNumber(char number) { int num = 0; for (char i = 48; i < 58; i++) { if (number == i) return num; num++; } } void puls(string number1, string number2) { stack<int> s; int tmp = 0; for (int i = 1; i <= number1.size() && i <= number2.size(); i++) { tmp = tmp + changeNumber(number1[number1.size() - i]) + changeNumber(number2[number2.size() - i]); s.push(tmp % 10); tmp /= 10; } for (int i = number2.size() + 1; i <= number1.size(); i++) { tmp = tmp + changeNumber(number1[number1.size() - i]); s.push(tmp % 10); tmp /= 10; } if (tmp > 0) s.push(tmp); if (s.size() > 80) cout << "overflow" << endl; else { while(0 < s.size()) { cout << s.top(); s.pop(); } cout << endl; } } int main(void) { string number1, number2; int count; cin >> count; for (int i = 0; i < count; i++) { cin >> number1 >> number2; if (number1.size() < number2.size()) puls(number2, number1); else puls(number1, number2); } return 0; }