13岁张明珠照片:得到一个ABCDEF这个六位数是多少

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 05:48:54
有一个六位数,现在暂时我们就叫它 ABCDEF
当这个数剩以1的时候,是这个数. (那是肯定的)
当这个数分别剩以2,3,4,5,6的时候,只是ABCDEF这几个数字的位置发生了变化,但仍然是由这几个数字组成的一个六位数,
那么现在请问我给出的ABCDEF这个六位数是多少?

谁能把代码写出来?

我也来一个 C#写的 结果是142857
private void button1_Click(object sender, System.EventArgs e)
{
bool flag = false;
long result = 0;
string[] myArray = new string[6];
for(result = 100000; result < 1000000; result++)
{
for(int i = 0; i < 6; i++)
{
myArray[i] = result.ToString().Substring(i, 1);
}
// 排除A与BCDEF的重复数字
if(myArray[0] == myArray[1] || myArray[0] == myArray[2] || myArray[0] == myArray[3] || myArray[0] == myArray[4] || myArray[0] == myArray[5])
{
continue;
}
// 排除B与CDEF的重复数字
if(myArray[1] == myArray[2] || myArray[1] == myArray[3] || myArray[1] == myArray[4] || myArray[1] == myArray[5])
{
continue;
}
// 排除C与DEF的重复数字
if(myArray[2] == myArray[3] || myArray[2] == myArray[4] || myArray[2] == myArray[5])
{
continue;
}
// 排除D与EF的重复数字
if(myArray[3] == myArray[4] || myArray[3] == myArray[5])
{
continue;
}
// 排除E与F的重复数字
if(myArray[4] == myArray[5])
{
continue;
}
long result2 = result * 2;
flag = isResult(result2,myArray);
if(flag)
{
long result3 = result * 3;
flag = isResult(result3,myArray);
}
if(flag)
{
long result4 = result * 4;
flag = isResult(result4,myArray);
}
if(flag)
{
long result5 = result * 5;
flag = isResult(result5,myArray);
}
if(flag)
{
long result6 = result * 6;
flag = isResult(result6,myArray);
}
if(flag)
{
this.listBox1.Items.Add(result.ToString());
this.listBox1.Refresh();
}
}
if(!flag)
{
MessageBox.Show("End");
}
}

private bool isResult(long argResult, string[] myArray)
{
string strResult = argResult.ToString();
bool[] isOK = new bool[6] {false, false, false, false, false, false};

for(int i = 0; i < strResult.Length; i++)
{
for(int j=0; j < myArray.Length; j++)
{
if(strResult.Substring(i, 1) == myArray[j])
{
isOK[j] = true;
}
}
}
if(isOK[0] && isOK[1] && isOK[2] && isOK[3] && isOK[4] && isOK[5])
{
return true;
}
else
{
return false;
}
}

简单,分少.

真能闹,这是奥数难题!
陈景润就是因为这个学术系统光荣地。

汗 总算搞定了 142857
要代码 加分的说

public class Test {
public static void main(String[] args) {
int num=6; //几位数
getVal(num);
}
private static int posAt(String oneVal,int target)
{
return (""+target).indexOf(oneVal);
}

private static void getVal(int num)
{
loop:
for(int i=getTens(1,num);i<getTens(1,num+1);i++)
{
if(i*6>getTens(1,num+1)) //不能超过6位数
continue;
for(int k=1;k<=6;k++)
{
String str=""+(i*k);
String res="";
for(int j=0;j<str.length();j++)
{
//判断结果中某一位置的数字是否在这个6位数中存在
if(posAt(""+str.charAt(j),i)<0)
continue loop;
//如果没有重复出现,则把他记录下来
if(res.indexOf(str.charAt(j))<0)
res+=str.charAt(j);
else
continue loop;
}
}
System.out.println("result is:"+i);
}
}

private static int getTens(int val,int num)
{
while(--num>0)
val*=10;
return val;
}
}

//结果 result is:142857

#include <iostream.h>

int ConvertIntoArray(int n,int array[6])
{
for(int i = 5;i>=0;i--)
{
array[i] = n%10;
n/=10;
}
return 1;
}

int IsInArray(int elem,int array[6])
{
int in = 0;
for(int i = 0;i<6;i++)
if(elem==array[i]){
in = 1;
break;
}
return in;
}

void main()
{
int iTemp[6];
int inTemp[6];
bool IsThis = false;
for(int i = 100000; i<=999999;i++){
ConvertIntoArray(i,iTemp);
for(int j = 2;j<=6;j++)
{
int k = i*j;
if(k>999999)
return;
ConvertIntoArray(k,inTemp);
for(int p = 0;p<6;p++){
if(IsInArray(inTemp[p],iTemp)==0){
IsThis = false;
break;
}
if(p==5)
IsThis = true;
}
if(IsThis == false)
break;

}
if(IsThis==true)
cout<<i;
}
}
//到这就是来学习的,不加分也无所谓!!
//result :142857