仅以此文纪念自己的傻逼。。,哎,觉得自己好弱啊。。。
第一题:篮球的编号是1——31,红球的编号是1——16。
要求:随机输出6个篮球和1个红球。。
思路:每次随机获得下标,那么用数组最大长度代表的数值去填匆,那么就不会重复了。。
代码:
package test;
import java.util.Random;
public class testrand
{
public static void main(String[] args)
{
int[] array=new int[8];
int[] seed=new int[32];
int[] vis=new int[32];
for(int i=0;i<=31;i++)
seed[i]=i+1;
Random rand=new Random();
int length=32;
for(int i=1;i<=6;i++)
{
int j=rand.nextInt(length-i);
array[i]=seed[j];
vis[array[i]]=1;
seed[j]=seed[length-i];
}
while(true)
{
int j=rand.nextInt(15);
if(vis[seed[j]]==0&&seed[j]<=16)
{
array[7]=seed[j];
break;
}
}
for(int i=1;i<=6;i++)
System.out.print(array[i]+" ");
System.out.println(array[7]);
}
}
第三题:
题目:一个自然数的末尾为6,求一个自然数当把这个数的末尾放到首位后,后来得到的数是原来的数的4倍。
代码:
package test;
public class testinteger
{
public static void main(String[] args)
{
int cnt,temp,a,b,p;
for(int i=1;i<=Integer.MAX_VALUE;i++)
{
cnt=0;
temp=1;
p=i;
while(p!=0)
{
p=p/10;
cnt++;
}
for(int j=1;j<=cnt;j++)
temp*=10;
b=6*temp+i;
a=i*10+6;
if(a*4==b)
{
System.out.println(a);
break;
}
}
}
}