京东笔试代码分享
第一次,无限序列AC
#include<iostream> #include<math.h> #include<vector> using namespace std; int main(){ double n; cin >> n; int res = 0; double tmp = n * 2 + 0.25; tmp = sqrt(tmp); tmp -= 0.5; res = ceil(tmp); cout << res<< endl; return 0; }
第二题,神奇数就 过了50,求大佬
#include<iostream> #include<vector> #include<algorithm> #include<bitset> #include<numeric> using namespace std; bool ismag(vector<int> &vec){ bitset<5001> bits(1); int sum = accumulate(vec.begin(), vec.end(), 0); for (auto n : vec) bits |= bits << n; return !(sum & 1) && bits[sum >> 1]; } bool ismagical(int num){ if (num == 0) return true; vector<int> vec; while (num != 0){ vec.push_back(num % 10); num /= 10; } if (vec.size() == 1) return false; return ismag(vec); } int main(){ int m, n; cin >> m >> n; int res = 0; for (int i = m; i <= n;i++) if (ismagical(i)) res++; cout << res << endl; return 0; }