求证明代码正确或错误
查看原帖
求证明代码正确或错误
378915
zhoujiefu楼主2024/7/18 09:00

和同学讨论了一下,感觉卡不掉? 求证明或 Hack

#include<bits/stdc++.h>
using namespace std;
bool vis[10];
int x,y,z;
double xy,yz;
bool check(int a,int b,int c){
	double ab=1.0*a/b,bc=1.0*b/c;
	if(abs(ab-xy)>1e-5||abs(bc-yz)>1e-5) return false;
	memset(vis,false,sizeof(vis));
	vis[a%10]=vis[b%10]=vis[c%10]=true;
	a/=10,b/=10,c/=10;
	vis[a%10]=vis[b%10]=vis[c%10]=true;
	a/=10,b/=10,c/=10;
	vis[a%10]=vis[b%10]=vis[c%10]=true;
	for(int i=1;i<=9;i++) if(!vis[i]) return false;
	return true;
}
int main(){
	bool f=1;
	cin>>x>>y>>z;
	xy=1.0*x/y;
	yz=1.0*y/z;
	for(int i=123;i<=987;i++){
		for(int j=234;j<=987;j++){
			for(int k=345;k<=987;k++){
				if(check(i,j,k)){
					printf("%d %d %d\n",i,j,k);
					f=0;
				}
			}
		}
	}
	if(f) cout<<"No!!!";
	return 0;
}
2024/7/18 09:00
加载中...