一、题目
隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。
小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,….
现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。请你直接提交这个整数,千万不要填写任何多余的内容。
参考答案:
publicclass Question1{
publicstaticvoidmain(String[]args) {
intcount=0;
for(inti=21;i<=50;i++){
if(i%2!=0)count++;
}
System.out.println(count);
}
}
二、题目
立方尾不变
有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,….
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容。
参考答案:
publicclass Question2 {
publicstaticvoidmain(String[] args) {
intcount=0;
for(inti=1;i<</span>10;i++){
if(i==Math.pow(i,3)%10)
count++;
}
for(inti=10;i<</span>100;i++){
if(i==Math.pow(i,3)%100)
count++;
}
for(inti=100;i<</span>1000;i++){
if(i==Math.pow(i,3)%1000)
count++;
}
for(inti=1000;i<</span>10000;i++){
if(i==Math.pow(i,3)%10000)
count++;
}
System.out.println(count);
}
}
三、题目
无穷分数 无穷的分数,有时会趋向于固定的数字。
请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0。
请填写该浮点数,不能填写任何多余的内容。
参考答案:
publicclass Question3{
publicstaticvoidmain(String[]args) {
doublea=f(0);
System.out.println(a);
}
publicstaticdoublef(doublex){
while(x<</span>10){
x=x+1.0/(f(x+1)+x+1);
}
return1.0/x;
}
}
四、题目
循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。比如,11/13=6=>0.846153846153…..其循环节为[846153]共有6位。下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
publicclass Question4{
publicstaticvoidmain(String[]args) {
intn=f(11,13);
System.out.println(n);
}
publicstaticintf(intn,intm)
{
n = n % m;
Vector v =new Vector();
for(;;)
{
v.add(n);
n *=10;
n = n % m;
if(n==0)return0;
if(v.indexOf(n)>=0)returnv.size();//填空
}
}
}
五、题目
格子中输出 stringInGrid方法会在一个指定大小的格子中打印指定的字符串。要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。如果不能恰好居中,可以稍稍偏左或者偏上一点。
参考答案:
publicclass Question5{
publicstaticvoidmain(String[]args) {
stringInGrid(20,4,"abcd1234");
}
publicstaticvoidstringInGrid(intwidth,intheight,String s)
{
if(s.length()>width-2)s = s.substring(0,width-2);
System.out.print("+");
for(inti=0;i2;i++)System.out.print("-");
System.out.println("+");
for(intk=1;k<(height-1)/2;k++){
System.out.print("|");
for(inti=0;i2;i++)System.out.print("");
System.out.println("|");
}
System.out.print("|");
String ff =" "+s+" "; //填空
System.out.print(String.format(ff,"",s,""));
System.out.println("|");
for(intk=(height-1)/2+1;k1;k++){
System.out.print("|");
for(inti=0;i2;i++)System.out.print("");
System.out.println("|");
}
System.out.print("+");
for(inti=0;i2;i++)System.out.print("-");
System.out.println("+");
}
}
六、题目
奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。分析:该数的平方数位数和加上立方和位数和正好是10位,我们可以人为的排除一部分不满足条件的
参考答案:
publicclass Question6 {
publicstaticvoidmain(String[]args){
f1();
}
//暴力破解
publicstaticvoidf1(){
ints=0;
intv=0;
for(inti=40;i<</span>100;i++){
s=(int)Math.pow(i,2);//四位数
inta=s;
intb=s/10;
intc=s/100;
intd=s/1000;
v=(int)Math.pow(i,3);//六位数
inte=v;
intf=v/10;
intg=v/100;
inth=v/1000;
intk=v/10000;
intm=v/100000;
if(a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=k&&a!=b&&b!=c&&b!=e&&b!=f&&b!=g&&b!=h&&b!=k&&b!=m
&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=k&&c!=m&&d!=e&&e!=f&&e!=g&&e!=h&&e!=k&&e!=m&&f!=h&&f!=k&&f!=m
&&f!=g&&g!=h&&h!=k&&k!=m&&m!=a&&(a+b+c+d+e+f+g+h+k+m==45))
{
System.out.println(i);
}
}
}
}
七、题目
加法变乘法
我们都知道:1+2+3+ … + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:1+2+3+…+10*11+12+…+27*28+29+…+49= 2015就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
publicclass Question7{
publicstaticvoidmain(String[]args) throws Exception {
//用穷举法来试探1225+a*b+e*f-a-b-e-f==2015 (b=a+1,f=e+1)
for(inti=1;i<</span>50;i++){
for(intj=1;j<</span>50;j++){
if((1225+i*(i+1)+j*(j+1)-i-j-(i+1)-(j+1))==2015&&i
System.out.println(i+"*****"+j);
}
}
}
}
}
·
八、题目
移动距离
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3…
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
1 2 3 4 5 6
12 11 109 8 7
13 14 1516 17 18....
我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)
输入为3个整数wm n,空格分开,都在1到10000范围内
要求输出一个整数,表示mn两楼间最短移动距离。
参考答案:
publicclass Question8{
publicstaticvoidmain(String[]args) {
Scanner sc=newScanner(System.in);
System.out.println("inputw:");
intw=sc.nextInt();
System.out.println("inputn:");
intn=sc.nextInt();
System.out.println("inputm");
intm=sc.nextInt();
int[][]a=newint[w][w];
for(inti=0;i
if(i==0){//第一行
for(intj=0;j
a[i][j]=j+1;
}
}
elseif(i%2!=0){//奇数行
intt=w*i+1;
for(intj=w-1;j>=0;j--){
a[i][j]=t++;
}
}else{//偶数行(除过0)
intt=w*i+1;
for(intj=0;j
a[i][j]=t++;
}
}
}
//打印
for(inti=0; i <w; i++) {
for(intj=0;j
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
//求最短路径
intx1=0,x2=0,y1=0,y2=0;
for(inti=0;i
for(intj=0;j
if(a[i][j]==n){
x1=i;
y1=j;
}
if(a[i][j]==m){
x2=i;
y2=j;
}
}
}
intdistance=Math.abs((x2-x1)+(y2-y1));
System.out.println(distance);
}
}
九、题目
打印大X
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数mn,表示笔的宽度,X的高度。用空格分开(0保证n是奇数)
要求输出一个大X
例如,用户输入:
3 9
程序应该输出:
再例如,用户输入:
4 21
程序应该输出
参考答案
publicclass Question9{
publicstaticvoidmain(String[]args) {
Scanner sc=newScanner(System.in);
System.out.println("inputn:");
intn=sc.nextInt();
System.out.println("inputm:");
intm=sc.nextInt();
char[][]ch=newchar[n][m+n-1];
//初始化方阵
for(inti=0;i
for(intj=0;j1;j++){
ch[i][j]='.';
}
}
//用“*”填充方阵
for(inti=0;i
for(intj=0,k=m+n-2;j<=k;j++,k--){
if(j
ch[i][j+i]='*';
if(k>=n-1)
ch[i][k-i]='*';
}
}
//打印
for(inti=0;i
for(intj=0;j1;j++){
System.out.print(ch[i][j]+"");
}
System.out.println();
}
}
}