社区讨论

点7,11没过,求调QWQ

P1236算24点参与者 2已保存回复 6

讨论操作

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

当前回复
6 条
当前快照
1 份
快照标识符
@mhjh4vpr
此快照首次捕获于
2025/11/04 02:29
4 个月前
此快照最后确认于
2025/11/04 02:29
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,k,ans,ans2,ans1,f[65];
bool mark=false;
void solve(int a,int b,int c,int d){
	for(int i=1;i<=64;i++){
			int the1=f[i]/100;
			int the2=(f[i]/10)%10;
			int the3=f[i]%10;
			if(the1==1)ans=a+b;
			if(the1==2)ans=a-b;
			if(the1==3)ans=a*b;
			if(the1==4){
				if(a%b!=0)continue;
				ans=a/b;
			}
			if(ans<0)continue;
			ans1=ans;
			if(the2==1)ans+=c;
			if(the2==2)ans-=c;
			if(the2==3)ans*=c;
			if(the2==4){
				if(ans%c!=0)continue;
				ans/=c;
			}
			if(ans<0)continue;
			ans2=ans;
			if(the3==1)ans+=d;
			if(the3==2)ans-=d;
			if(the3==3)ans*=d;
			if(the3==4){
				if(ans%d!=0)continue;
				ans/=d;
			}
			if(ans==24){
				mark=true;
				if(the1==1)cout<<max(a,b)<<"+"<<min(a,b)<<"="<<a+b;
				if(the1==2)cout<<a<<"-"<<b<<"="<<a-b;
				if(the1==3)cout<<max(a,b)<<"*"<<min(a,b)<<"="<<a*b;
				if(the1==4)cout<<a<<"/"<<b<<"="<<a/b;
				cout<<endl;
				if(the2==1)cout<<max(ans1,c)<<"+"<<min(ans1,c)<<"="<<ans1+c;
				if(the2==2)cout<<ans1<<"-"<<c<<"="<<ans1-c;
				if(the2==3)cout<<max(ans1,c)<<"*"<<min(ans1,c)<<"="<<ans1*c;
				if(the2==4)cout<<ans1<<"/"<<c<<"="<<ans1/c;
				cout<<endl;
				if(the3==1)cout<<max(ans2,d)<<"+"<<min(ans2,d)<<"="<<24;
				if(the3==2)cout<<ans2<<"-"<<d<<"="<<24;
				if(the3==3)cout<<max(ans2,d)<<"*"<<min(ans2,d)<<"="<<24;
				if(the3==4)cout<<ans2<<"/"<<d<<"="<<24;
				return;
			}
		}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	int a,b,c,d;
	cin>>a>>b>>c>>d;
	for(int i=1;i<=4;i++){
		for(int j=1;j<=4;j++){
			for(int k=1;k<=4;k++){
				f[++m]=i*100+j*10+k;
			}
		}
	}
	for(int i=1;i<=4;i++){
		for(int j=1;j<=4;j++){
			for(int k=1;k<=4;k++){
				for(int t=1;t<=4;t++){
					if(i==j||i==k||i==t||j==k||j==t||k==t)continue;
					int x=0,y=0,z=0,u=0;
					if(i%4==1)x=a;
					if(i%4==2)x=b;
					if(i%4==3)x=c;
					if(i%4==0)x=d;
					if(j%4==1)y=a;
					if(j%4==2)y=b;
					if(j%4==3)y=c;
					if(j%4==0)y=d;
					if(k%4==1)z=a;
					if(k%4==2)z=b;
					if(k%4==3)z=c;
					if(k%4==0)z=d;
					if(t%4==1)u=a;
					if(t%4==2)u=b;
					if(t%4==3)u=c;
					if(t%4==0)u=d;
					solve(x,y,z,u);
					if(mark==true)return 0;
				}
			}
		}
	}
	cout<<"No answer!";
	return 0;
}

回复

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

正在加载回复...