该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import java.util.Date;
public class test_21
{
public static int[] add(int a[], int b[])
{
int[] c = new int[22];
for (int i = 0; i < 22; i++)
c[i] = 0;
int jin = 0;
for (int i = 0; i < 21; i++)
{
int x = a[i] + b[i] + jin;
c[i] = x % 10;
jin = x / 10;
}
c[21]=jin;
return c;
}
public static int[] cheng(int a[], int b)
{
int[] c = new int[21];
for (int i = 0; i < 21; i++)
c[i] = 0;
int jin = 0;
for (int i = 0; i < 21; i++)
{
int x = a[i] * b + jin;
c[i] = x % 10;
jin = x / 10;
}
return c;
}
public static int[] jinwei(int a[])
{
int open=1;
a[1]+=1;
int all=0;
for(int i=0;i<10;i++)
all+=a[i];
while(all>21)
{
a[open]=0;
open+=1;
a[open]+=1;
all=0;
for(int i=0;i<10;i++)
all+=a[i];
}
return a;
}
public static void main(String[] args)
{
Date date1=new Date();
int[][] d = new int[10][21];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 21; j++)
d[i][j] = 0;
}
for (int i = 0; i < 10; i++)
{
d[i][0] = i;
}
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 10; j++)
{
d[j] = cheng(d[j], j);
}
}
int[] num=new int[10];
for(int i=0;i<10;i++)
num[i]=0;
num=jinwei(num);
while(num[9]!=21)
{
int[] sum = new int[22];
for(int i=0;i<22;i++)
sum[i]=0;
for(int i=0;i<10;i++)
{
if(num[i]!=0)
{
for(int j=0;j
{
sum=add(sum,d[i]);
}
}
}
if(sum[20]!=0&&sum[21]==0)//计算结果有效
{
int[] jg=new int[10];
for(int i=0;i<10;i++)
jg[i]=0;
for(int i=0;i<21;i++)
{
jg[sum[i]]++;
}
boolean type=true;
for(int i=1;i<10;i++)
{
if(num[i]!=jg[i])
type=false;
}
if(type)
{
System.out.print("\n找到一个正确结果:");
for(int i=20;i>-1;i--)
System.out.print(sum[i]);
}
}
num=jinwei(num);
}
Date date2=new Date();
System.out.print("\n运行时间:"+(date2.getTime()-date1.getTime()));
}
}
大概需要90秒