好未来笔试 2018【C++实现】
#include <iostream> #include <string> using namespace std; int main() { // input string data; cin >> data; // main vector<int> v(data.size() + 1, 0); int result = 0; int begin = 0; int end = 1; while (end <= data.size()) { int current_num = data[end - 1] - '0'; if (current_num % 3 == 0) { ++result; begin = end; end += 1; continue; } v[end] = v[end - 1] + current_num; int temp = begin; while (temp < end) { if ((v[end] - v[temp]) % 3 == 0) { ++result; begin = end; break; } ++temp; } ++end; } cout << result << endl; return 0; }
#include <iostream> #include <algorithm> #include <vector> #include <cmath> using namespace std; pair<int, int> get_zero(int num) { int count = 0; int count_1 = 0; while(num) { if( (num & 1) == 0) { ++ count; } num >>= 1; ++count_1; } return {count, count_1}; } int main() { // input int t; cin >> t; cin.get(); vector<vector<int> > data(t, vector<int>(2)); // int x = 0; int k = 0; int y = 1; for (int i = 0; i < t; ++i) { cin >> x >> k; cin.get(); data[i] = {x, k}; } for (int _t = 0; _t < t; ++_t) { x = data[_t][0]; k = data[_t][1]; auto counts = get_zero(x); int zeros = counts.first; int ones = counts.second; int temp = pow(2, zeros); int cycle = k / temp; int offset = k % temp; int _k = 0; y = 0; while(_k != offset) { ++y; if((x + y) == (x | y)) { ++_k; } } y = y + cycle * pow(2, ones); cout << y << endl; } return 0; }
#include <vector> #include <algorithm> #include <iostream> using namespace std; void dfs(vector<int>& b, int idx, vector<int> temp, vector<string>& res) { if (idx == b.size()) { string r; for (auto e : temp) r += to_string(e); res.push_back(r); return; } if (b[idx] == 0) { dfs(b, idx + 1, temp, res); } temp.push_back(idx); dfs(b, idx+1, temp, res); } int main() { int temp; vector<int> v; while (cin >> temp) v.push_back(temp); vector<string> res; dfs(v, 0, vector<int>(), res); sort(res.begin(), res.end()); for (const auto &e : res) cout << e << endl; }
#include <iostream> using namespace std; int main() { int n, m; cin >> n >> m; int temp; int sum = 0; for(int _n = 0; _n < n; ++_n) { cin >> temp; sum += temp; } printf("%.2f", double(sum) / (n - m) ); return 0; }
#include <vector> #include <algorithm> #include <iostream> using namespace std; int main() { int temp; vector<int> v; while (cin >> temp) v.push_back(temp); vector<int> sum = v; for (int i = 0; i < v.size(); ++i) { for (int j = 0; j < i; ++j) { if (v[i] > v[j] && sum[i] < sum[j] + v[i]) { sum[i] = sum[j] + v[i]; } } } cout << *max_element(sum.begin(), sum.end()) << endl; return 0; }
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
char* ReplaceSubStr(const char* str, const char* srcSubStr, const char* dstSubStr, char* out)
{
char *p;
char *_out = out;
const char *_str = str;
const char *_src = srcSubStr;
const char *_dst = dstSubStr;
int src_size = strlen(_src);
int dst_size = strlen(_dst);
int len = 0;
do
{
p = strstr(_str, _src);
if(p == 0)
{
strcpy(_out, _str);
return out;
}
len = p - _str;
memcpy(_out, _str, len);
memcpy(_out + len, _dst, dst_size);
_str = p + src_size;
_out = _out + len + dst_size;
} while(p);
return out;
}
int main()
{
char str[1024];
char srcSubStr[1024];
char dstSubStr[1024];
char out[1024];
gets(str);
gets(srcSubStr);
gets(dstSubStr);
ReplaceSubStr(str, srcSubStr, dstSubStr, out);
printf("%s\n", out);
return 0;
}