蓝桥杯 陕西赛区 Java b组 冲省一 第五天

本文介绍了如何通过编程实现2024年二进制形式中1的计数,并演示了如何根据图像识别的盘子信息计算自助餐费用,涉及基础算法和字符串处理技术。
摘要由CSDN通过智能技术生成

今天浅浅练了俩题,第二个总是通不过,无语,后来发现了,非常低级的错误字符串地方没看准位置错误o((>ω< ))o

1.美丽的2024

小蓝刚学习完二进制知识,所以现在他对任何数字的二进制都特别感兴趣。恰好即将迎来 2024 年,他想知道2024 的二进制中几个1?

输入格式

本题为填空题,无输入。

输出格式

输出一个整数表示答案。


这道题十进制转换为二进制,模式为第一次时十进制数取余2,将得到的数字倒叙排列,即作为二进制数字的第一位,并判断此数是否为1,是则将1的次数+1。后将十进制数除以2,在进行取余运算,模为2,再将此值作为二进制的第二位。依次递推,直到最后一次这个十进制数/2为==0时,循环结束。写程序时即满足十进制数>0作为循环条件即可。

在进行倒序排列时,整数类型+字符串可直接转换为字符串类型

技巧:通过没有借助包装类 String s3=""+num;(String res="";)

倒序:将res=j%2+res;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int num=2024;
        int n=0;
        String res="";
        for(int j=num;j>0;j/=2){
          
          if(j%2==1){
            n++;
          }
          res=j%2+res;
        }

        System.out.println(n);

    }   
}

2. 自助餐【算法赛】

食堂最近推出了自助取餐功能,可以通过盘子的形状自动计算费用。你参与到自助计算价格的项目工作中,视觉组的同学已经帮你通过图像识别把盘子图片转换为了字符串,你只需要计算具体的价格即可。

餐盘的费用如下表所示:

餐盘种类yuanxingzhengfangxingchangfangxing
价格123
餐盘种类sanjiaoxingtuoyuanxingliubianxing
价格456

你将会得到n 个字符串,请按照价格表计算价格。

输入格式

第一行一个整数n,表示盘子个数。

接下来一行 n 个字符串,用空格隔开,表示不同的盘子。保证每个字符串都是题目描述中提到的六种之一。

输出格式

一行,一个整数,表示答案。

输入样例

5

yuanxing zhengfangxing changfangxing sanjiaoxing changfangxing

说明0<n≤100。

这道题就是统计用户输入的字符串,根据字符串我们对照表格计算出每个相应字符串的出现频率。

创建一个字符串元素为n的数组,通过循环遍历输入给每个字符串数组赋值,将每个字符串数组和表格上的类别进行比较,从而确定价格,进而计算出最终价格。

要注意在比较两个字符串是否一样时,要通过str1.equals(str2)来比较。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n =scan.nextInt();
        
        String[] type=new String[n];
        int n1=0,n2=0,n3=0,n4=0,n5=0,n6=0;
        for(int i=0;i<n;i++){
          type[i]=scan.next();
          if(type[i].equals("yuanxing")){
            n1++;
          }else if(type[i].equals("zhengfangxing")){
            n2++;
          }else if(type[i].equals("changfangxing")){
            n3++;
          }else if(type[i].equals("sanjiaoxing")){
            n4++;
          }else if(type[i].equals("tuoyuanxing")){
            n5++;
          }else if (type[i].equals("liubianxing")){
            n6++;
          }

        }
        int price=0;
        price=1*n1+2*n2+3*n3+4*n4+5*n5+6*n6;
        System.out.println(price);

        scan.close();
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值