java刷题---蓝桥第六届省赛Java-C组1-3

  1. 隔行变色

题目

Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。

小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,....

现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。

请你直接提交这个整数,千万不要填写任何多余的内容。

问题分析

将2作为一个循环体

第n个 如果%2=1就是n/2+1个 %2=0就是n/2个

计算n=21和n=50的情况,相减得到答案

代码实现

package 省赛一轮;

public class 第6届题目1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
//        Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。
//        小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,....
//        现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。
//
//        请你直接提交这个整数,千万不要填写任何多余的内容
        int color1 = 21;
        int color2 = 50;
        int sum1 = f(color1);
        int sum2 = f(color2);
        System.out.println(sum2-sum1);
    }

    private static int f(int n) {
        // TODO Auto-generated method stub
        if (n%2==0||n%2==1) {
            int n1=n/2;
            return n1 ;
        }else {
            int n1 = (n/2)+1;
            return n1 ;
        }
        
        
    }

}

输出 15

  1. 立方尾不变

题目

有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,....
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容。

问题分析

就是检测n和 n的立方的结尾的 n.length() 位是否相同

计算n的立方

裁剪字符才能

比对、相同计数

--------

int max=21474 83647

1000的立方就是十位数了

所以我们循环到10000

int范围不够需要long类型


代码实现

package 省赛一轮;

public class 第6届题目2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int count = 0;
        for (long i = 0; i <= 10000; i++) {
            String x = i + "";
            long n = i*i*i;
            String sum =  n + "";
            String y = sum.substring(sum.length() - x.length());
            if (y.equals(x)) {
                count++;
            }
        }
        System.out.println(count);
    }
    



}

输出

计入0 是37

不计入0 是36

3、无穷分数

题目

无穷的分数,有时会趋向于固定的数字。

请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0。

请填写该浮点数,不能填写任何多余的内容。

问题分析

无穷...

循环,不是很好实现,,循环体构造有点麻烦

递归方法比较适合,本质也是循环

输出五位的话,只计算到有刘娥五年小数

//x= n / (n + (n+1/......))

//确定一个合理范围,就算结果再变化的范围

//这样就是有限循环了

//只测试10的整倍,最小10再向下结果会改变

//分数也就是除法 , 分子/分母=分数

代码实现

package 省赛一轮;

public class 第6届题目3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //x= n / (n + (n+1/......))
        //确定一个合理范围,就算结果再变化的范围
        //这样就是有限循环了
        //只测试10的整倍,最小10再向下结果会改变
        //分数也就是除法 , 分子/分母=分数
        double temp = 10.0;//最大除数
        double result = 0.0;
        for(int i = 10;i >= 1;i--) {
            
            result = i - 1 + temp;
            
            temp = (i - 1) / result;//不断除以上一次记过,也就是下面的分母
        }
        System.out.printf("%.5f",result);

    }



}

输出结果

0.58198

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CLODVEP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值