金山云笔试
1.
int sum(vector<int>v,int index) { if(index<v.size()) return v[index]+sum(v,2*index+1)+sum(v,2*index+2); else return 0; } int main() { //input demo vector<vector<int>> v; int count; cin >> count; getchar(); for (int i = 0; i < count; i++) { vector<int> temp; string str; getline(cin, str); stringstream ss; ss << str; string number; while (getline(ss, number, ' ')) { temp.push_back(stoi(number)); } v.push_back(temp); } // for (int k = 0; k < v.size(); k++) { int flag=0; for (int i = 0; i <= (v[k].size() / 2 - 1); i++) { if (sum(v[k], 2 * i + 1) == sum(v[k], 2 * i + 2)) { cout << "Yes" << endl; flag=1; break; } } if(flag==0) cout<<"No"<<endl; } }
2.出现5 的次数
#include <iostream> #include <bits/stdc++.h> using namespace std; int count(int n, int x) { int cnt = 0, k; for (int i = 1;k = n / i;i *= 10) { // 高位的数字。 int high = k / 10; if (x == 0) { if (high) { high--; } else { break; } } cnt += high * i; // 当前位的数字。 int cur = k % 10; if (cur > x) { cnt += i; } else if (cur == x) { // n - k * i 为低位的数字。 cnt += n - k * i + 1; } } return cnt; } int main() { int x; cin>>x; cout<<count(x,5)<<endl; }