蓝桥杯 2015 javaC组真题(上)

隔行变色

Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。
小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,…
现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。

public class Main1 {
    
    
	public static void main(String[] args) {
    
    
		int sum=0;
		for(int i=21;i<=50;i++) {
    
    
			if(i%2==1)
				sum++;
		}
		System.out.println(sum);
	}
}

本题答案 15

立方尾不变

有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,…

请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。

public class Main2 {
    
    
	public static void main(String[] args) {
    
    
		int count=0;
		for(long i=1;i<=10000;i++)
		{
    
    
			if(f(i))
				count++;
		}
		System.out.println(count);
	}
	static boolean f(long i) {
    
    
		long x=i*i*i;
		String s1="";
		s1=s1+x;
		String s2="";
		s2=s2+i;
//		int s3=Integer.valueOf(s1.substring(s1.length()-s2.length(), s1.length()));
//		System.out.println(s1+" "+s2+" "+s3);
//		if(i==s3)
//			return true;
//		else
//			return false;
		String s3=s1.substring(s1.length()-s2.length(),s1.length());
		if(s2.equals(s3)) {
    
    
			System.out.println(s1+" "+s2+" "+s3);
			return true;
			
		}
		else
			return false;
	}
}

无穷分数

无穷的分数,有时会趋向于固定的数字。
请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0。
在这里插入图片描述

import java.util.Scanner;

public class Main3 {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc=new Scanner(System.in);
		double n=sc.nextDouble();//输入分子
		double sum=n+2;//分母等于分子+2
		for(double i=n;i>=1;i--)
			sum=i+(i+1)/sum;//后面跟着原来的规律i/i+1 
		System.out.println(String.format("%.5f", 1/sum));
	}
}

循环节长度

两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。

import java.util.Vector;
public class Main4 {
    
    
	public static void main(String[] args) {
    
    
		System.out.println(f(11,13));
		System.out.println(f(1, 8));
		System.out.println(f(8, 3));
		System.out.println(f(39, 190));
	}
	public static int f(int n,int m) {
    
    
		n=n%m;
		Vector<Integer> v=new Vector<Integer>();
		for(;;) {
    
    
			v.add(n);
			n*=10;
			n=n%m;
			if(n==0)
				return 0;
			if(v.indexOf(n)>0)
				return v.size()-v.indexOf(n);
		}
	}
}

格子中输出

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

package jc;

public class Main5 {
    
    
	public static void main(String[] args) {
    
    
		
	}
	public static void stringInGrid(int width, int height, String s)
	{
    
    
		if(s.length()>width-2) s = s.substring(0,width-2);
		System.out.print("+");
		for(int i=0;i<width-2;i++) System.out.print("-");
		System.out.println("+");
		
		for(int k=1; k<(height-1)/2;k++){
    
    
			System.out.print("|");
			for(int i=0;i<width-2;i++) System.out.print(" ");
			System.out.println("|");
		}
		
		System.out.print("|");
		
		String ff =(width-strlen(s)-2)/2,"",buf,(width-strlen(s)-2)/2,"");  //填空
		System.out.print(String.format(ff,"",s,""));
		          
		System.out.println("|");
		
		for(int k=(height-1)/2+1; k<height-1; k++){
    
    
			System.out.print("|");
			for(int i=0;i<width-2;i++) System.out.print(" ");
			System.out.println("|");
		}	
		
		System.out.print("+");
		for(int i=0;i<width-2;i++) System.out.print("-");
		System.out.println("+");	
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_45079974/article/details/104911146
今日推荐