蓝桥杯 第七届 Java C组真题及解析(二)

209 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

四、题目

循环节长度 
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。比如,11/13=6=>0.846153846153…..其循环节为[846153]共有6位。下面的方法,可以求出循环节的长度。 
请仔细阅读代码,并填写划线部分缺少的代码。

参考代码

public class Question4{


   publicstaticvoidmain(String[]args) {

      int n = f(11,13);

      System.out.println(n);

   }

   public static int f(intn,intm)
   {

       n = n % m; 
       Vector v =new Vector(); 

       for(;;)
       {
          v.add(n);
          n *=10;
          n = n % m;
          if(n==0) return 0;
          if(v.indexOf(n) >= 0)
              returnv.size();//填空

       }

   }

}

 

五、题目

格子中输出 stringInGrid方法会在一个指定大小的格子中打印指定的字符串。要求字符串在水平、垂直两个方向上都居中。 
如果字符串太长,就截断。如果不能恰好居中,可以稍稍偏左或者偏上一点。

参考答案:

public class Question5{

   public static void main(String[]args) {

        stringInGrid(20,4,"abcd1234");

   }

   public static void stringInGrid(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(int k=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(int k=(height-1)/2+1; k>1; 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位,我们可以人为的排除一部分不满足条件的

参考答案:

public class Question6 {

    public static void main(String[]args){

       f1();     

    }

   //暴力破解

   public static void f1(){

       int s=0;

       int v=0;

       for(inti=40; i<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);

           }                  

       }

   }

}