非常暴力的解决了,从输出结果可以看出,赚钱的那个有很多种情况,赔钱的只有一种,但神奇的是都赚了558
#include <iostream>#include <cstring>#include <string>#include <vector>#include <queue>#include <cstdio>#include <set>#include <cmath>#include <algorithm>#include <queue>#define INF 0x3f3f3f3f#define MAXN 100005#define Mod 10001using namespace std;int num[]= {0,1,2,3,4,5,6,7,8,9};int dnum[]= {0,1,2,-1,-1,5,9,-1,8,6};int main(){ int a[10],b[10]; for(a[1]=1; a[1]<=9; ++a[1]) for(a[2]=0; a[2]<=9; ++a[2]) for(a[3]=0; a[3]<=9; ++a[3]) for(a[4]=1; a[4]<=9; ++a[4]) { if(dnum[a[1]]>=0&&dnum[a[2]]>=0&&dnum[a[3]]>=0&&dnum[a[3]]>=0) { int x=a[1]*1000+a[2]*100+a[3]*10+a[4]; int y=dnum[a[4]]*1000+dnum[a[3]]*100+dnum[a[2]]*10+dnum[a[1]]; if(x-y>=200&&x-y<=300) { for(b[1]=1; b[1]<=9; ++b[1]) for(b[2]=0; b[2]<=9; ++b[2]) for(b[3]=0; b[3]<=9; ++b[3]) for(b[4]=1; b[4]<=9; ++b[4]) { if(dnum[b[1]]>=0&&dnum[b[2]]>=0&&dnum[b[3]]>=0&&dnum[b[3]]>=0) { int i=b[1]*1000+b[2]*100+b[3]*10+b[4]; int j=dnum[b[4]]*1000+dnum[b[3]]*100+dnum[b[2]]*10+dnum[b[1]]; if(j-i>=800&&j-i<=900) { if(j-i+y-x==558) cout<<x<<" "<<y<<"|"<<i<<" "<<j<<endl; } } } } } } return 0;}新闻热点
疑难解答
图片精选