京东笔试代码分享
第一次,无限序列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;
}