80分求调!
查看原帖
80分求调!
1051616
duck_lite楼主2025/2/1 22:54

rt

思路是深基书上面的,变量123到987,然后判断后面成比例的数是否能恰好占满9个数字

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef struct stu stu;
ll flag_global=0;
void f(ll (&v)[10],ll tmp){
	while(tmp>0){
		v[tmp%10]+=1;
		tmp=tmp/10;
	}
}
bool cmp(ll a,ll b){
	ll a_x=a/100;ll b_x=b/100;
	return a_x<b_x;
}
void solve(){
	double a,b,c;cin>>a>>b>>c;
	for(ll i=123;i<=987;++i){
		ll tmp_a=i*1.0;
		ll tmp_b=1.0*i/a*b;
		ll tmp_c=1.0*i/a*c;
		ll v[10];
		memset(v,0,sizeof v);
		f(v,tmp_a);f(v,tmp_b);f(v,tmp_c);//f函数将预设的数字每一位,装到桶v里面
		ll flag=1;
    //判断每一个位数是不是都恰好只有1个
		for(ll i=1;i<=9;++i){
			if(v[i]!=1){
				flag=0;
				break;
			}
		}
		if(flag){
			cout<<tmp_a<<" "<<tmp_b<<" "<<tmp_c;
			cout<<"\n";
		}else continue;
		if(flag)flag_global=1;
	}
	//还有一个判断无解的条件,再加个flag_global
	if(!flag_global)cout<<"No!!!";
}
int main(){
	ll T=1;
	while(T--)solve();
	return 0;
}

但是不知道#6测试点为什么wa了,

求各位dalao解答QAQ 还有感觉这个暴力代码有点屎山,如果dalao们能给出精简的意见,改善码风格,小弟更是感激不尽!!

2025/2/1 22:54
加载中...