Quiz
https://yukicoder.me/problems/no/539
AC Code
https://yukicoder.me/submissions/353645
感想
- やるだけなのだが、意外と骨が折れる
- 文字列で表された数字の和はたまに作ることがあるので関数化しておきたい
文字列で表された数字の和
string zero_padding(string s, ll len){
ll diff = len - s.size();
stringstream ss;
FOR(i, 0, diff){
ss << '0';
}
ss << s;
return ss.str();
}
ll ctoi(char c){
ll v = c - '0';
return v;
}
string string_add(string s, string t){
ll L = max(s.size(), t.size());
s = zero_padding(s, L);
t = zero_padding(t, L);
stringstream ss;
ll carry = 0; // 繰り上がり
for(int i=L-1; i>=0; i--){
ll v = ctoi(s[i]) + ctoi(t[i]) + carry;
if(v>9){
carry = 1;
v = v%10;
}else{
carry = 0;
}
ss << v;
}
if(carry==1){
ss << 1;
}
string ret = ss.str();
reverse(ALL(ret));
return ret;
}
getlineとcinの混合に注意
- cin > Tの後、文字列はスペースを含むのでgetlineをした
- しかし、cinの後には改行文字が残っており、最初のgetlineでそれを読んでしまう
- 混ぜるな危険
- 今回は余分な改行文字を捨てた
ll T; cin >> T; string dustbox; getline(cin, dustbox);