蓝桥杯练习生第四天

小蓝每天都锻炼身体。

正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。

小蓝跑步已经坚持了很长时间,从 2000年 11 月 11 日周六(含)到 2020年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?

思路:看判断闰年还是平年,天数超过当月天数就要重置天数,月份加一,如果月份大于12,就要重置月份,年份加一,如果周数大于7,就要重置周几,最后把 2020年 1010 月 11 日带入。

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

public class Main {
    public static void main(String[] args) {
        // 定义起始和结束日期
        int[] month={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int year=2000;
        int day=1;
        int week=6;
        int mon=1;
        int km=0;
        while(true){
        if(year%4==0&&year%100!=0||year%400==0){
          month[2]=29;
        }else{
          month[2]=28;
        }
        if(day == 1 || week== 1){
          km+=2;
         } else{
            km+=1;
          }
    
        day++;
        week++;
        if(day>month[mon]){
          day=1;
          mon++;
        }
        if(mon>12){
          mon=1;
          year++;
        }
        if(week>7){
          week=week%7;
        }
        if(year==2020&&mon==10&&day==1){
          km+=2;
         break;
        }
        }
        System.out.println(km);
       
    }
}

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。

这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。

小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。

现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。

取款机只能提供 100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。

以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折
****     125.50       58折
****      84.98        9折
****     113.35       68折
****     166.57        半价
****      42.56        9折
****      81.90       95折
****     131.78        8折
****     255.89       78折
****     109.17        9折
****     146.69       68折
****     139.33       65折
****     141.16       78折
****     154.74        8折
****      59.42        8折
****      85.44       68折
****     293.70       88折
****     261.79       65折
****      11.30       88折
****     268.27       58折
****     128.29       88折
****     251.03        8折
****     208.39       75折
****     128.88       75折
****      62.06        9折
****     225.87       75折
****      12.89       75折
****      34.28       75折
****      62.16       58折
****     129.12        半价
****     218.37        半价
****     289.69        8折

思路:用excel做或者暴力求解。

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

public class Main {
    public static void main(String[] args) {
     double sum = 180.90*0.88+10.25*0.65+56.14*0.9+104.65*0.9+100.30*0.88+297.15*0.5+26.75*0.65+130.62*0.5+240.28*0.58+270.62*0.8+115.87*0.88+247.34*0.95+73.21*0.9+101.00*0.5+79.54*0.5+278.44*0.7+199.26*0.5+12.97*0.9+166.30*0.78+125.50*0.58+84.98*0.9+113.35*0.68+166.57*0.5+42.56*0.9+81.90*0.95+131.78*0.8+255.89*0.78+109.17*0.9+146.69*0.68+139.33*0.65+141.16*0.78+154.74*0.8+59.42*0.8+85.44*0.68+293.70*0.88+261.79*0.65+11.30*0.88+268.27*0.58+128.29*0.88+251.03*0.8+208.39*0.75+128.88*0.75+62.06*0.9+225.87*0.75+12.89*0.75+34.28*0.75+62.16*0.58+129.12*0.5+218.37*0.5+289.69*0.8;
     double  a=sum%100;
     double  b=sum-a;
     int c=(int)b+100;
      System.out.println(c);
    }
}

如下图所示,小明用从 11 开始的正整数"蛇形"填充无限大的矩阵。

1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...

容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数是多少?

思路:斜着看,永远是前一行本身+4*行数或者前一行数字平方+现在一行数字平方

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

public class Main {
    public static void main(String[] args) {
      int a=1;
        for(int i=0;i<=19;i++){
          a=a+4*i;
        }
         System.out.println(a);
    }
}

小蓝有一个超大的仓库,可以摆放很多货物。

现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。

小蓝希望所有的货物最终摆成一个大的长方体。即在长、宽、高的方向上分别堆 LL、WW、HH 的货物,满足 n=L×W×Hn=L×W×H。

给定 nn,请问有多少种堆放货物的方案满足要求。

例如,当 n=4n=4 时,有以下 66 种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×11×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。

请问,当 n=2021041820210418(注意有 16 位数字)时,总共有多少种方案?

提示:建议使用计算机编程解决问题。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

**思路:**定义一个ArrayList数组,存放num的因子

/从1开始遍历,遍历到num的平方根结束。不需要把num遍历一遍,这样算法复杂都也非常大,重点看for循环里面的语句

如果能被整除,就放到arr数组中

当i能被num整除的情况下,求出num关于i的另外一个除数n //这样,for循环不需要从1遍历到num。可以通过较小的因子,求出另外一个较大的因子

如果num = Math.sqrt(num)*Math.sqrt(num),那么由较小的因子求较大的因子时,会重复,要排除这种情况

最后三层for循环依次遍历即可。

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.util.ArrayList;
public class Main {
    public static void main(String[] args) {
      int count=0;
      long n=2021041820210418l;
      ArrayList<Long> list=new  ArrayList<>();
      for(long i=1;i<Math.sqrt(n);i++){
        if(n%i==0){
          list.add(i);
        long a=n/i;
        if(a!=i){
          list.add(a);
        }
      }
      }
    
      for(long i:list){
        for(long j:list){
          for(long k:list){
            if(i*j*k==n){
              count++;
            }
          }
        }
      }
      System.out.println(count);
    }
}
相关推荐
yuanbenshidiaos13 分钟前
linux----文件访问(c语言)
linux·服务器·算法
咩咩觉主21 分钟前
Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定
java·unity·游戏引擎
Q_192849990628 分钟前
基于Spring Boot的房屋租赁管理系统
java·spring boot·后端
不想当程序猿_28 分钟前
【蓝桥杯每日一题】扫雷——暴力搜索
算法·蓝桥杯
天天进步201530 分钟前
Java全栈项目 - 学生档案管理系统
java·开发语言
柒月的猫35 分钟前
模拟法简介(蓝桥杯)
职场和发展·蓝桥杯
清弦墨客36 分钟前
【蓝桥杯】43696.小数第n位
java·c语言·c++·python·蓝桥杯
Best_Me071 小时前
最短路径C++
java·c++·算法
我叫啥都行1 小时前
计算机基础知识复习12.20
java·jvm·笔记·后端·sql
Adellle1 小时前
docker容器镜像拉取失败解决方案
java·docker·容器