52pts,离谱RE求调(悬赏LONG_LONG_MAX关)
查看原帖
52pts,离谱RE求调(悬赏LONG_LONG_MAX关)
378915
zhoujiefu楼主2024/3/10 20:39
#include<bits/stdc++.h>
using namespace std;
int a[300010];
string f[105];
struct node{
	string s;
	int pos;
}ans[30005];
bool cmp(node a,node b){
	if(a.pos!=b.pos) return a.pos<b.pos;
	else if(a.s.substr(0,a.pos)!=b.s.substr(0,b.pos)) return a.s.substr(0,a.pos)<b.s.substr(0,b.pos);
	else if(a.s.size()!=b.s.size()) return a.s.size()<b.s.size();
	else return a.s<b.s;
}
signed main(){
//	ios::sync_with_stdio(0);
//	cin.tie(0);cout.tie(0);
	int t;
	cin>>t;
	while(t--){
		int n,k,maxa=-0x3f3f3f3f,tot=0;
		cin>>n>>k;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			maxa=max(maxa,a[i]);
		}
		if(k==1){
			f[1]="1";
		}
		else{//f里面存程序员节的号码 
			long long cnt=1;
			while(cnt<=stoi(to_string(n)+to_string(maxa))){
				cnt*=k;
				f[++tot]=to_string(cnt);
			}
		}
		sort(f+1,f+tot+1);
		int num=0;
		for(int i=1;i<=n;i++){
			string s=to_string(i);
			for(int j=1;j<=tot;j++){
				if(f[j].substr(0,s.size())==s){
					string r=f[j].substr(s.size(),f[j].size()-s.size());
					if(r.size()<to_string(a[i]).size()&&r.size()>0&&r[0]!='0'){
						num++;
						ans[num].s=to_string(i)+" "+r;
						ans[num].pos=to_string(i).size();
					}
					else if(r.size()==to_string(a[i]).size()&&r<=to_string(a[i])&&r.size()>0&&r[0]!='0'){
						num++;
						ans[num].s=to_string(i)+" "+r;
						ans[num].pos=to_string(i).size();
					}
				}
			}
		}
		cout<<num<<'\n';
		sort(ans+1,ans+num+1,cmp);
		for(int i=1;i<=num;i++){
			cout<<ans[i].s<<'\n';
		}
	}
	return 0;
}

RE错误显示aborted iot trap

2024/3/10 20:39
加载中...