p1618三连击升级版,枚举

主要注意一点:要检查先乘后除的那几项是否可以整除,没有余数
#include <bits/stdc++.h>

using namespace std;

int a,b,c,vis[10],flag=0;

bool isok(int x){
	for(int i=0;i<3;i++){
		if(vis[x%10]) return false;
		vis[x%10]++;
		x/=10;
	}
	return vis[0]==0;
}

int main(int argc, char** argv) {
	cin>>a>>b>>c;
	for(int i=123;i<=987*a/c;i++){
		memset(vis,0,sizeof(vis));
		if(isok(i)&&isok(i*b/a)&&i*b%a==0&&isok(i*c/a)&&i*c%a==0)//if(isok(i)&&isok(i/a*b)&&isok(i/a*c)) 先乘后除 
			flag=1, cout<<i<<" "<<i*b/a<<" "<<i*c/a<<endl;//flag=1, cout<<i<<" "<<i/a*b<<" "<<i/a*c<<endl;
	}
	if(flag==0) cout<<"No!!!"<<endl;
	return 0;
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务