金山云笔试
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;
}