68pts悬关求助
查看原帖
68pts悬关求助
741244
Eason_cyx大愚若智楼主2024/3/10 18:56
#include <bits/stdc++.h>
#define int unsigned long long
using namespace std;
int a[500005];
struct day {
	int m,d;
	bool operator < (const day& x) {
		return (m != x.m ? m < x.m : d < x.d);
	}
} ans[500005];
int to_int(string s) {
	int ans;
	stringstream ss(s);
	ss >> ans;
	return ans;
}
signed main() {
	int t; cin >> t;
	while(t--) {
		int n,k; cin >> n >> k;
		
		int maxn = 0;
		for(int i = 1;i <= n;i++) {
			cin >> a[i];
			maxn = max(maxn,a[i]);
		}
		if(k == 1) {
			cout << 0 << endl << endl;
			continue;
		}
		if(n == 1) {
			int p = 1,ans = 0;
			while(p <= a[1]) {
				p *= k;
				string P = to_string(p);
				if(P.size() == 1) continue;
				if(P[0] != '1') continue;
				P[0] = ' ';
				if(P[1] == '0') continue;
				int PP = to_int(P);
				if(PP <= a[1] && PP >= 1) {
					ans++;
				}
			}
			cout << ans << endl;
			p = 1;
			while(p <= a[1]) {
				p *= k;
				string P = to_string(p);
				if(P.size() == 1) continue;
				if(P[0] != '1') continue;
				P[0] = ' ';
				if(P[1] == '0') continue;
				int PP = to_int(P);
				if(PP <= a[1] && PP >= 1) {
					cout << "1 " << PP << endl;
				}
			}
			continue;
		}
		int siz = to_string(n).size() + to_string(maxn).size();
		int p = 1;
		int cur = 0;
		while(to_string(p).size() <= siz+1) {
			p *= k;
			// cout << p << endl;
			if(to_string(p).size() == 1) {
				continue;
			}
			bool flag = false;
			string P = to_string(p);
			for(int i = 0;i < P.size()-1;i++) {
				//[0,i],[i+1,s.size()-1]
				string s = P.substr(0,i+1),t = P.substr(i+1);
				if(s[0] == '0' || t[0] == '0') continue;
				int S = to_int(s),T = to_int(t);
				// cout << S << ' ' << T << endl;
				//S月T日
				if(S >= 1 && S <= n && T >= 1 && T <= a[S]) {
					ans[++cur] = {S,T};
					flag = true;
				}
			}
			// cout << flag << endl;
			if(cur >= 19990) break;
		}
		sort(ans+1,ans+cur+1);
		cout << cur << endl;
		for(int i = 1;i <= cur;i++) cout << ans[i].m << ' ' << ans[i].d << endl;
		// cout << endl;
	}
	return 0;
}
2024/3/10 18:56
加载中...