网站邮箱接口怎么设置,wordpress阅读数总是0,简单代码大全,如何做网站卖画最大数字 原题链接 #x1f970;提交结果 思路 对于每一位#xff0c;我我们都要尽力到达 9 所以我们去遍历每一位, 如果是 9 直接跳过这一位 如果可以上调到 9 我们将这一位上调到 9 #xff0c;并且在a 中减去对应的次数 同样的#xff0c;如果可以下调到 9#xff0c;我…最大数字 原题链接 提交结果 思路 对于每一位我我们都要尽力到达 9 所以我们去遍历每一位, 如果是 9 直接跳过这一位 如果可以上调到 9 我们将这一位上调到 9 并且在a 中减去对应的次数 同样的如果可以下调到 9我们将这一位下调到 9并且在b中减去对应的次数 如果上调和下调的次数都不够就按找能加就加的原则 例如:3-9 a1 b1 3想要到达9上调的次数不足以使他到达9同样下调也不行这个时候全加上就可以了同时别忘记扣除对应次数。
这里要注意并不是上调或下调到9的次数小就选次数少的两种选法是不一定的 3327621916603411 7 9 对于这个测试用例每一位就可以存在两种操作上调或者下调两种都要试一遍最后取得最大值是答案。(如果不考虑加和减的顺序最后测试点通过情况只能拿97分亲身实践!) 代码
#include iostream
#define int long long
using namespace std;//特殊测试用例: 3327621916603411 7 9
inline string maxNum1(string st, int a, int b) {for (int i 0; i st.length(); i) {int x st[i] - 0;int up 9 - x; int down x 1; if (x 9) { continue;} else if (up a) { //能够上调x up;a - up;} else if (down b) { //能够下调 b - down;x 9;} else if (up a) { x a;a 0;} else if (a 0 b 0) break;st[i] x 0;}return st;
}inline string maxNum2(string st, int a, int b) {for (int i 0; i st.length(); i) {int x st[i] - 0;int up 9 - x; int down x 1; if (x 9) { continue;} else if (down b) { b - down;x 9;} else if (up a) { x up;a - up;} else if (up a) { x a;a 0;} else if (a 0 b 0) break;st[i] x 0;}return st;
}inline string findMax(string a, string b) {if (a b) return a;else return b;
}signed main() {ios::sync_with_stdio(false);cin.tie(0);int a, b;string st;cin st;cin a b;st findMax(maxNum1(st, a, b), maxNum2(st, a, b));cout st endl;
}