欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

蓝桥杯 2015 javaC组真题(上)

程序员文章站 2022-04-21 23:27:00
...

隔行变色

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。
蓝桥杯 2015 javaC组真题(上)

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("+");	
	}
}

相关标签: 程序