G直接界定上下界为什么不行

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int _t = 1;
int a[15],b[15];
int f[15][1050],n,mex;
int dfs(int i,int s,bool d,bool h) {
    if(i < 1) {
        for(int w = 0;w < mex; ++ w) {
            if((s & (1 << w)) == 0) return 0; 
        }
        if((s & (1 << mex))) return 0;
        return 1;
    }
    if(!d && !h && f[i][s] != -1) return f[i][s];
    int down = d ? a[i] : 0;
    int up = h ? b[i] : 9;
    int ans = 0;
    for(int v = down;v <= up; ++ v) {
        ans += dfs(i-1,s | (1 << v),d && (v == down),h && (v == up));
    }
    if(!d && !h) f[i][s] = ans;
    return ans;
}
void solve() {
    ll x, k;
    cin >> x >> k;
    k += x;
    memset(f,-1,sizeof(f));
    n = log10(k)+1;
    for(int i = 1;i <= n; ++ i) {
        a[i] = x % 10;x/=10;
        b[i] = k % 10;k/=10;
    }
    for(int v = 10;v > -1; --v) {
        mex = v;
        int cnt = dfs(n,0,1,1);
        if(cnt) {
            cout << v << ' ' << cnt << endl;
            break;
        } 
    }
}
signed main() {
    cin >> _t;
    while(_t--) {
        solve();
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
最近拿到了正浩的提前批offer感觉自己的实力得到了肯定,也给了我更多底气
搞机墨镜猫:正浩提前批官网好像就只有电力电子软硬件,哥们投的是这两个岗位吗
26届校招投递进展
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务