华为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一步#