Atcoderの部分和問題ですが一部分どのような処理が行われているのかわかりません。
Bit全探索で解こうと思っているのですが**tmp += s[i] - '0';の'0'**はどういった処理をしているのでしょうか?
C++
1#include <bits/stdc++.h> 2#define rep(i, n) for (int i = 0; i < (int)(n); i++) 3using namespace std; 4using ll = long long; 5// using P = pair<int, int>; 6 7int main() { 8 string s; 9 cin >> s; 10 int n = s.size(); //nはsの文字数が入っている 11 ll res = 0; 12 13 for(int bit = 0; bit < (1<<(n-1)); bit++){ 14 ll tmp = 0; 15 for(int i = 0; i < n-1; i++){ 16 tmp *= 10; 17 tmp += s[i] - '0'; 18 if(bit & (1<<i)){ 19 res += tmp; 20 tmp = 0; 21 } 22 } 23 tmp *= 10; 24 tmp += s.back() - '0'; 25 res += tmp; 26 } 27 cout << res << endl; 28}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/07 16:16