京东神奇数为嘛你们暴力过了,我暴力就过不了呢?
#include <iostream> #include <vector> using namespace std; typedef uint32_t uint; bool isMiracle(uint num) { vector<int> arr1; uint sum = 0; while(num) { sum += (num % 10); arr1.push_back(num%10); num /= 10; } if(sum & 1) return false; sum = sum >> 1; vector<bool> dp(sum+1, 0); dp[0] = true; for(auto n : arr1) for(int i = sum; i>=n; i--) dp[i] = dp[i-n]; return dp[sum]; } int main() { int l, r; while(cin >> l >> r) { int res = 0; for(int i = l; i <= r; i++) { if(isMiracle(i)) res++; } cout << res << endl; } return 0; }
求帮忙查看一下为什么?