华为od机试100分题-靠谱的车
昨天机试试过,能100%过,如果有更优解法,欢迎评论区指出。
题目描述:
思路与解析:
每次遇到4就跳过,所以相当于进制由变成9,对于每位如果大于4,说明对这位需要多处理一次,即这一位减去1。具体操作:
1、输入一个数。
2、用vector容器或者数组存储每个位对应的值,如果大于4单独对这一位减1。
3、将vector容器的内容取出并按9进制算出答案。
代码如下:
#include <iostream>
#include<vector>
using namespace std;
int main(){
int n;
cin >> n;
vector<int> arr;
while (n) {//将每一位放入容器,也可以插到后面(push_back),不过计算答案时要从后往前
arr.insert(arr.begin(),n % 10);
n /= 10;
}
for (int i = 0; i < arr.size(); i++) {//对于大于4的每位都要减1
if (arr[i] > 4)
arr[i]--;
}
int ans = 0;
for (int i = 0; i < arr.size(); i++)//按9进制算出答案
ans = ans * 9 + arr[i];
cout << ans << endl;
return 0;
}
#每日靠近华为offer一步#

查看14道真题和解析