为什么月赛RE
  • 板块灌水区
  • 楼主Konjac_C
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/10 18:05
  • 上次更新2024/3/10 19:55:28
查看原帖
为什么月赛RE
1282142
Konjac_C楼主2024/3/10 18:05

T3 68pts

#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int a[30000005];
int cnt;
struct node
{
	int d1,d2;
}ans[30000005];
bool cmp(node x,node y)
{
	if(x.d1==y.d1) return x.d2<y.d2;
	return x.d1<y.d1;
}
string s,ss;
int num1,num2,len,numm,num;
void check(int k)
{
	num=1;
	while(num<=(int)3000001000000000){
		num*=k;
		s=to_string(num);
		len=s.length();
		for(int i=0;i<len-1;i++){
			num1=0,num2=0;
			for(int j=0;j<=i;j++) num1=num1*10+(s[j]-'0');
			for(int j=i+1;j<len;j++) num2=num2*10+(s[j]-'0');
			if(num1<=n){
				if(num2<=a[num1]){
					ss=to_string(num2);
					numm=num1*pow(10,ss.length())+num2;
					if(numm==num) ans[++cnt].d1=num1,ans[cnt].d2=num2;
				}
			}
		}
	}
}
main()
{
	ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
	int t;
	cin>>t;
	while(t--){
		cin>>n>>k;
		cnt=0;
		for(int i=1;i<=n;i++) cin>>a[i];
		if(k>1) check(k);
		else{
			cout<<"0\n";
			continue;
		}
		cout<<cnt<<"\n";
		sort(ans+1,ans+1+cnt,cmp);
		for(int i=1;i<=cnt;i++) cout<<ans[i].d1<<" "<<ans[i].d2<<"\n";
	}
	
	
	return 0;
}
2024/3/10 18:05
加载中...