WA 68pts 求调
  • 板块P10246 Exciting Days
  • 楼主tder
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/16 17:00
  • 上次更新2024/3/16 17:27:18
查看原帖
WA 68pts 求调
714254
tder楼主2024/3/16 17:00
#include <bits/stdc++.h>
using namespace std;
#define int __int128
const int N = 1e6 + 5, INF = 1e17;
int t, n, k, a[N], q[N];
vector<pair<int, int>> ans;
int f(int p) {
    if(!p) return 0;
    return f(p / 10) + 1;
}
inline int read() {
    int r = 0, f = 1;
    char c = getchar();
    while(c != '-' && (c < '0' || c > '9')) c = getchar();
    if(c == '-') {
        f = -1;
        c = getchar();
    }
    while(c >= '0' && c <= '9') {
        r *= 10; r += c - '0';
        c = getchar();
    }
    return r * f;
}
inline void write(int x) {
    if(x < 0) {
        putchar('-');
        x = -x;
    }
    if(x > 9) write(x / 10);
    putchar(x % 10 + '0');
}
signed main() {
    q[0] = 1; 
    for(int i = 1; i <= 18; i++) q[i] = q[i - 1] * 10;
    t = read();
    while(t--) {
        ans.clear();
        n = read(); k = read();
        for(int i = 1; i <= n; i++) a[i] = read();
        if(k == 1) {
            write(0);
            continue;
        }
        int b = k;
        while(k <= INF) {
            int l = f(k);
            // cout<<k<<": "<<endl;
            for(int i = 1; i < l; i++) {
                int x = k / q[i], y = k % q[i];
                // cout<<"  ("<<x<<", "<<y<<")"<<endl;
                if(x >= 1 && x <= n && y >= 1 && y <= a[x] && f(x) + f(y) == l) ans.push_back({x, y});
            }
            k *= b;
        }
        sort(ans.begin(), ans.end());
        write(ans.size()); putchar('\n');
        for(auto i : ans) {
            write(i.first); putchar(' '); write(i.second); putchar('\n');
        }
    }
}
2024/3/16 17:00
加载中...