1 条题解
-
0
C++ :
#include<stdio.h> void shuchu3(int a,int b)//输出结合为3的倍数的部分答案 { int a1=a%3,b1=b%3; if(a1==0||b1==0) printf("(%d*%d)",a,b); else if(a1==b1) printf("(%d-%d)",a,b); else printf("(%d+%d)",a,b); } int main() { printf("yes\n"); int a[4]; for(int i=0;i<4;i++) scanf("%d",&a[i]); int i,j; for(i=0;i<4;i++)//检查是否有mod 8相同的余数 { for(j=i+1;j<4;j++) if(a[i]%8==a[j]%8) break; if(j<4) break; } if(i<4)//有 { int t1,t2;//找到除mod 8后相同组合以外的两个数的下标 for(int k=0;k<4;k++) if(k!=i&&k!=j) { t2=t1; t1=k; } printf("(%d-%d)*",a[i],a[j]); shuchu3(a[t1],a[t2]); } else //没有 { for(i=0;i<4;i++)//检查是否有mod 8余数为0的 if(!(a[i]%8)) break; if(i<4) //有 { int t1,t2,t3;//找到除了mod 8余0的其他三个数的下标 for(int k=0;k<4;k++) if(k!=i) { t3=t2; t2=t1; t1=k; } printf("(%d*%d)*",a[i],a[t1]); shuchu3(a[t2],a[t3]); } else //没有 { for(i=0;i<4;i++)//检查是否有相加后mod 8余0的组合 { for(j=i+1;j<4;j++) if((a[i]+a[j])%8==0) break; if(j<4) break; } if(i<4)//有 { int t1,t2; for(int k=0;k<4;k++) if(k!=i&&k!=j) { t2=t1; t1=k; } printf("(%d+%d)*",a[i],a[j]); shuchu3(a[t1],a[t2]); } else //没有 { int t1,t2,t3,t4; for(i=0;i<4;i++)//获取在mod 8后mod 2余0的组合的下标与其余下标 if((a[i]%8)%2==0) { t2=t1; t1=i; } else { t4=t3; t3=i; } printf("(%d*%d)*",a[t1],a[t2]); shuchu3(a[t3],a[t4]); } } } return 0; }
- 1
信息
- ID
- 660
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 提交数
- 4
- 已通过
- 2
- 上传者