忙里偷闲抽15分钟写三道水题
这题,5分钟一道。vim上写的,g++ -o 编译, ./运行。谁让咱现在手里暂时有个mac pro呢/doge
题目链接:华为研发工程师编程题
第一题
#include <stdio.h>
int solve(int n) {
if(n<2) return 0;
if(n==2) return 1;
return n/3+solve(n/3+n%3);
}
int main(void) {
int n;
while(scanf("%d",&n)!=EOF&&n) {
printf("%d\n",solve(n));
}
return 0;
}
第二题
#include <stdio.h>
#include <set>
using std::set;
int main(void) {
int n ,x;
while (scanf("%d",&n) != EOF) {
set<int> st;
for (int i = 0; i < n; ++i ) {
scanf("%d",&x);
st.insert(x);
}
for(set<int>::iterator it = st.begin(); it != st.end(); ++it) {
printf("%d\n",*it);
}
}
return 0;
}
第三题
#include <stdio.h>
#include <iostream>
#include <cstdio>
long long getNum(std::string str) {
int len = str.length();
long long ans = 0;
for(int i = 2; i < len; ++i) {
ans <<= 4;
if(isdigit(str[i])) {
ans += str[i] - '0';
}
else {
ans += str[i] - 'A' + 10;
}
}
return ans;
}
int main(void) {
std::string str;
while(std::cin>>str) {
printf("%lld\n",getNum(str));
}
return 0;
}