蓝桥杯 历届试题 神奇算式

来源:互联网 发布:多益网络策划笔试题目 编辑:程序博客网 时间:2024/05/19 23:23
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int k=0;int kk=0;void f(int *ia,int sum ,int q){int a[4]={0};int v[4]={0};for(int i=0;i<4;i++){a[i]=sum%10;sum/=10;}if(ia[0]!=ia[1]&&ia[1]!=ia[2]&&ia[2]!=ia[3]&&ia[0]!=ia[2]&&ia[0]!=ia[3]&&ia[1]!=ia[3]);else return;for(i=0;i<4;i++){for(int j=0;j<4;j++){if(a[i]==ia[j]){v[j]++;if(v[j]>1)return ;}}}if((v[0]+v[1]+v[2]+v[3]) != 4)return ;else{if(q==0){printf("%d*%d %d %d\n",ia[0],ia[1],ia[2],ia[3]);k++;}if(q==1){printf("%d %d*%d %d\n",ia[0],ia[1],ia[2],ia[3]);kk++;}}}int main(){int ia[10]={0,1,2,3,4,5,6,7,8,9};int ib[4]={0};do{if(ib[0]!=ia[0]||ib[1]!=ia[1]||ib[2]!=ia[2]||ib[3]!=ia[3]){ib[0]=ia[0];ib[1]=ia[1];ib[2]=ia[2];ib[3]=ia[3];if(ia[0]!=0&&ia[1]!=0&&(ib[0])*(ib[1]*100+ib[2]*10+ib[3])>=1000&&(ib[0])*(ib[1]*100+ib[2]*10+ib[3])<=9999){f(ib,(ib[0])*(ib[1]*100+ib[2]*10+ib[3]),0);}if(ia[0]!=0&&ia[2]!=0){if((ib[0]*10+ib[1])*(ib[2]*10+ib[3])>=1000&&(ib[0]*10+ib[1])*(ib[2]*10+ib[3])<=9999)f(ib,(ib[0]*10+ib[1])*(ib[2]*10+ib[3]),1);}}}while(next_permutation(ia,ia+10));printf("%d\n",k+kk/2);return 0;}


0 0
原创粉丝点击