2024-06-01 13:16:57 By 陈明玮
直接上代码!!!
#include <iostream>
using namespace std;
string ans[100005];
char lock[6];
long long cnt;
string from_int_to_string(long long x) {
string a="";
if(x==0) {
return "0";
}
while(x) {
a=(char)('0'+(x%10))+a;
x/=10;
}
return a;
}
int main() {
ios::sync_with_stdio(false);
long long n;
cin>>n;
for(long long i=100000; i<=999999; i++) {
if(i==n) {
cnt++;
ans[cnt]=from_int_to_string(n);
}
}
for(long long i=0; i<10000; i++) {
long long maxj=0;
string is=from_int_to_string(i);
if(is.size()==4) maxj=9;
if(is.size()==3) maxj=99;
if(is.size()==2) maxj=999;
if(is.size()==1) maxj=9999;
for(long long j=0; j<maxj; j++) {
string js=from_int_to_string(j);
if(is.size()+js.size()!=5) {
continue;
}
if(i+j==n) {
cnt++;
ans[cnt]=is+"+"+js;
}
if(i-j==n) {
cnt++;
ans[cnt]=is+"-"+js;
}
if(i*j==n) {
cnt++;
ans[cnt]=is+"*"+js;
}
if(j!=0) {
if(i%j==0) {
if(i/j==n) {
cnt++;
ans[cnt]=is+"/"+js;
}
}
}
}
}
for(long long i=0; i<100; i++) {
string is=from_int_to_string(i);
long long maxj;
if(is.size()==2) maxj=10;
else maxj=100;
for(long long j=0; j<maxj; j++) {
string js=from_int_to_string(j);
long long maxk;
if(is.size()==2||js.size()==2) maxk=10;
else maxk=100;
for(long long k=0; k<100; k++) {
string ks=from_int_to_string(k);
if(is.size()+js.size()+ks.size()!=4) continue;
if(i+j+k==n) {
cnt++;
ans[cnt]=is+"+"+js+"+"+ks;
}
if(i+j-k==n) {
cnt++;
ans[cnt]=is+"+"+js+"-"+ks;
}
if(i+j*k==n) {
cnt++;
ans[cnt]=is+"+"+js+"*"+ks;
}
if(k!=0) if(j%k==0)
if(i+j/k==n) {
cnt++;
ans[cnt]=is+"+"+js+"/"+ks;
}
if(i-j+k==n) {
cnt++;
ans[cnt]=is+"-"+js+"+"+ks;
}
if(i-j-k==n) {
cnt++;
ans[cnt]=is+"-"+js+"-"+ks;
}
if(i-j*k==n) {
cnt++;
ans[cnt]=is+"-"+js+"*"+ks;
}
if(k!=0) if(j%k==0)
if(i-j/k==n) {
cnt++;
ans[cnt]=is+"-"+js+"/"+ks;
}
if(i*j+k==n) {
cnt++;
ans[cnt]=is+"*"+js+"+"+ks;
}
if(i*j-k==n) {
cnt++;
ans[cnt]=is+"*"+js+"-"+ks;
}
if(i*j*k==n) {
cnt++;
ans[cnt]=is+"*"+js+"*"+ks;
}
if(k!=0) if((i*j)%k==0)
if(i*j/k==n) {
cnt++;
ans[cnt]=is+"*"+js+"/"+ks;
}
if(j!=0) {
if(i%j==0)
if(i/j+k==n) {
cnt++;
ans[cnt]=is+"/"+js+"+"+ks;
}
if(i%j==0)
if(i/j-k==n) {
cnt++;
ans[cnt]=is+"/"+js+"-"+ks;
}
if((i*k)%j==0)
if(i*k/j==n) {
cnt++;
ans[cnt]=is+"/"+js+"*"+ks;
}
if(k!=0)
if(i%(j*k)==0)
if(i/j/k==n) {
cnt++;
ans[cnt]=is+"/"+js+"/"+ks;
}
}
}
}
}
bool used[128];
bool mst[128];
for(long long i=0; i<127; i++) used[i]=mst[i]=0;
for(long long i=1; i<=cnt; i++) {
long long ok=1;
bool tmp[128];
for(long long j='0'; j<='9'; j++) tmp[j]=0;
tmp['+']=tmp['-']=tmp['*']=tmp['/'];
for(long long j=0; j<ans[i].size(); j++) {
if(used[ans[i][j]]) {
ok=0;
}
if(lock[j]) {
if(ans[i][j]!=lock[j]) {
ok=0;
}
}
tmp[ans[i][j]]=1;
}
for(long long j='0'; j<='9'; j++) if(mst[j]&&(!tmp[j])) ok=0;
if(mst['+']&&(!tmp['+'])) ok=0;
if(mst['-']&&(!tmp['-'])) ok=0;
if(mst['*']&&(!tmp['*'])) ok=0;
if(mst['/']&&(!tmp['/'])) ok=0;
if(ok) {
cout<<ans[i]<<endl;
string t;
cin>>t;
for(long long j=0; j<ans[i].size(); j++) {
if(t[j]=='X') {
used[ans[i][j]]=1;
}
}
for(long long j=0; j<ans[i].size(); j++) {
if(t[j]=='A'||t[j]=='B') {
used[ans[i][j]]=0;
mst[ans[i][j]]=1;
}
if(t[j]=='A') {
lock[j]=ans[i][j];
}
}
if(t=="AAAAAA") {
return 0;
}
}
}
return 0;
}
别数了,200行
今天上课时突发奇想,花了我一个小时才写出来
评论
发表评论
可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。