题目描述:
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44# include<stdio.h> int main(){ int w[4]={0}; int i,sum=0; int x[100],n=0; for(i=1000;i<10000;i++){ w[0]=i/1000;//千位 w[1]=i%1000/100;//百位 w[2]=i%100/10;//十位 w[3]=i%10;//个位 if(w[0]==w[1]||w[0]==w[2]||w[0]==w[3]||w[1]==w[2]||w[1]==w[3]||w[2]==w[3])continue;//保证每位数字不同 for(int i1=0;i1<4;i1++){ for(int i2=0;i2<4;i2++){ if(i2==i1)continue; for(int i3=0;i3<4;i3++){ if(i3==i1||i3==i2)continue; for(int i4=0;i4<4;i4++){ if(i4==i3||i4==i2||i4==i1)continue; int a=w[i1]; int b=w[i2]; int c=w[i3]; int d=w[i4]; if(a*(b*100+c*10+d)==i){ //printf("%d*%d%d%d=%dn",a,b,c,d,i); sum++; } if((a*10+b)*(c*10+d)==i){ int flag=0;//去除重复 for(int j=0;j<n;j++){ if(c*10+d==x[j])flag=1; } if(flag==1)break; //printf("%d%d*%d%d=%dn",a,b,c,d,i); x[n++]=a*10+b; sum++; } } } } } } printf("%d",sum); }
最后
以上就是义气鞋子最近收集整理的关于枚举-解方程的全部内容,更多相关枚举-解方程内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复