社区讨论

80分代码求调

P1618三连击(升级版)参与者 5已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@lo85x48q
此快照首次捕获于
2023/10/27 13:18
2 年前
此快照最后确认于
2023/10/27 13:18
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
//memset(d,0,sizeof d);
int a,b,c,d[11],ans,ans2,ans3,wa=0,sum=0,gcd3;
int gcd(int a,int b,int c)
{
    int t;
    t=a;
    if(t>b) t=b;
    if(t>c) t=c;
    while(a%t!=0||b%t!=0||c%t!=0)t--;
    return t;
}
int main() {
	cin>>a>>b>>c;
	gcd3=gcd(a,b,c);
    a=a/gcd3,b=b/gcd3,c=c/gcd3;
    //cout<<a<<" "<<b<<" "<<c<<" "<<gcd3<<endl;
	if(a==0||b==0||c==0){cout<<"No!!!";return 0;}
	for(int i=1;i<=9;i++)
	{
		for(int j=1;j<=9;j++)
		{
			for(int k=1;k<=9;k++)
			{
				d[i]++;d[j]++;d[k]++;
				ans=i*100+j*10+k;
				ans2=ans*b;
				ans3=ans*c;
				if(ans2/1000!=0){memset(d,0,sizeof d);continue;}
				else if(ans3/1000!=0){memset(d,0,sizeof d);continue;}
				d[ans2%10]++;d[ans2/10%10]++;d[ans2/100]++;
				d[ans3%10]++;d[ans3/10%10]++;d[ans3/100]++;
				if(d[0]!=0){memset(d,0,sizeof d);continue;}
				for(int l=1;l<=9;l++)if(d[l]>=2){wa=1;break;}
				if(wa==1){wa=0;memset(d,0,sizeof d);continue;}
				else {cout<<ans<<" "<<ans2<<" "<<ans3<<endl;sum++;memset(d,0,sizeof d);}
			}
		}
	}
	if(sum==0)cout<<"No!!!";
	return 0;
}

回复

10 条回复,欢迎继续交流。

正在加载回复...