首页 > 其他分享 >SMU 冬令营第六周蓝桥杯模拟赛

SMU 冬令营第六周蓝桥杯模拟赛

时间:2023-02-19 22:55:37浏览次数:40  
标签:arr scanner 冬令营 int SMU System 蓝桥 public Scanner

A.刷题统计

题目:

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
输入三个数 a,b,n
输出多少天

思路:

首先我们计算他会做多少个整的星期,这需要先计算一整个星期最多能做多少题,也就是5a+2b题,用总数n除5a+2b就能得到,然后乘7就是天数。然后取模就能得到最后一个星期还剩多少题,然后再划分一下,是在前五天还是在后两天。剩下的题对a取模,如果为0就刚好那一天可以做完,有多出来的就需要多做一天,所以就加一。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long a = scanner.nextLong();
		long b = scanner.nextLong();
		long n = scanner.nextLong();
		long m = n/(5*a+b*2)*7;
		n  = n%(5*a+b*2);
		if(n<=5*a) {
			m = m+n/a+1; 
			if(n%a==0) {
				m--;
			}
		}else if(n>5*a&&n<=5*a+b) {
			m = m+6;
		}else {
			m = m+7;
		}
		System.out.println(m);
	}
}

B.齿轮

题目:

这天,小明在组装齿轮。
他一共有 n 个齿轮,第 i 个齿轮的半径为 ri, 他需要把这 n 个齿轮按一定顺序从左到右组装起来,这样最左边的齿轮转起来之后,可以传递到最右边的齿轮,并且这些齿轮能够起到提升或者降低转速(角速度)的作用。

小明看着这些齿轮,突然有 Q 个疑问: 能否按一定顺序组装这些齿轮使得最右边的齿轮的转速是最左边的齿轮的 qi 倍?

思路:

根据高中物理知识,角速度与半径成反比,且中间的齿轮数都是不需要管的,所以只需要找到成q倍关系的两个数即可,这里我们使用到计数排序,但是java会内存不够,使用C++不会。

代码:

点击查看java代码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
	static int[] rec = new int[200005];
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int Q = scanner.nextInt();
		int[] arr = new int[n];
		for(int i = 0;i < n;i++) {
			arr[i] = scanner.nextInt();
			rec[arr[i]]++;
		}
		Arrays.sort(arr);
		while(Q-->0) {
			int q = scanner.nextInt();
			boolean flag = true;
			for(int i = 0;i < n;i++) {
				if(arr[i]*q>arr[n-1]) {
					break;
				}
				if(q==1) {
					if(rec[arr[i]*q]>=2) {
						System.out.println("YES");
						flag = false;
						break;
					}
				}else {
					if(rec[arr[i]*q]>=1) {
						System.out.println("YES");
						flag = false;
						break;
					}
				}
				
				if(!flag) {
					break;
				}
			}
			if(flag) {
				System.out.println("NO");
			}
		}
	}
}

点击查看C++代码
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 2e5+10;

int a[N];
int rec[N];

int main() {
    int n , Q;
    cin >> n >> Q;
    for(int i = 0;i  < n;i++){
        cin>>a[i];
        rec[a[i]]++;
    }
    sort(a,a+n);
    while(Q--){
        int q ;
        cin >> q;
        bool flag = true;
        for(int i = 0;i < n;i++) {
            if(a[i]*q>a[n-1]) {
                break;
            }
            if(q==1) {
                if(rec[a[i]*q]>=2) {
                    cout<<"YES"<<endl;
                    flag = false;
                    break;
                }
            }else {
                if(rec[a[i]*q]>=1) {
                    cout<<"YES"<<endl;
                    flag = false;
                    break;
                }
            }

            if(!flag) {
                break;
            }
        }
        if(flag) {
            cout<<"NO"<<endl;
        }
    }
    return 0;
}

C.求和

题目:

思路:

将a1...an的和的平方,然后展开就可以得到将所有数相乘,减去平方的数,再除2即可得到该公式的和。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		long s1 = 0;
		long s2 = 0;
		while(n-->0) {
			int a = scanner.nextInt();
			s1 += a;
			s2 += a*a;
		}
		long res = (s1*s1-s2)/2;
		System.out.println(res);
	}
}

D.修剪灌木

题目:

爱丽丝要完成一项修剪灌木的工作。

有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌木,让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。

灌木每天从早上到傍晩会长高 1 厘米, 而其余时间不会长高。在第一天的早晨, 所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。

思路:

这个题目就是求比该树的两边距离的二倍的较大者。还有就是注意是白天长高,傍晚剪。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] arr = new int[n+1];
		for(int i = 1;i <= n;i++) {
			arr[i] = Math.max((n-i)*2, (i-1)*2);
			System.out.println(arr[i]);
		}
	}
}

F.斐波那契数组

题目:

思路:

根据题意,从前往后改

代码:

点击查看代码
import java.util.Scanner;
public class MainF {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] arr = new int[n];
		for(int i = 0;i < n;i++) {
			arr[i] = scanner.nextInt();
		}
		int count = 0;
		if(arr[0]!=arr[1]) {
			arr[1] = arr[0];
			count++;
		}
		for(int i = 0;i < n-2;i++) {
			if(arr[i]+arr[i+1]!=arr[i+2]) {
				arr[i+2] = arr[i]+arr[i+1];
				count++;
			}
		}
		System.out.println(count);
	}
}

标签:arr,scanner,冬令营,int,SMU,System,蓝桥,public,Scanner
From: https://www.cnblogs.com/Tcoo/p/17118380.html

相关文章

  • 蓝桥杯---考察团组成
    某饭店招待国外考察团。按照标准,对领导是400元/人,随团职员200元/人,对司机50元/人。考察团共36人,招待费结算为3600元,请问领导、职员、司机各几人。答案是三个整数,用逗号分隔......
  • 蓝桥杯--微生物增殖
    假设有两种微生物X和YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。现在已知有......
  • 蓝桥杯 -- 三人年龄
    三人年龄三个神秘蒙面人来访F博士。博士询问他们年龄时,他们说:我们中年龄最小的不超过19岁。我们3人年龄总和为70岁。且我们三人年龄的乘积是所有可能情况中最大的。请帮助F......
  • 蓝桥杯备战日志(Python)16-玩具蛇&序列个数-(DFS&枚举、递归)
    玩具蛇原题小蓝有一条玩具蛇,一共有16节,上面标着数字1至16。每一节都是一个正方形的形状。相邻的两节可以成直线或者成90度角。小蓝还有一个4×4的方格盒子,用于存放......
  • SMU Winter 2023 Round #12 (Div.2)
    A.KK画猪题目:输入pig,输出一些字符。代码:点击查看代码importjava.util.Scanner;publicclassMain{ publicstaticvoidmain(String[]args){ Scannerscanne......
  • SMU Winter 2023 Round #11 (Div.2)
    A.BCD题意:输入两个数,一个是数的数量N,另一个是每个箱子能够装多少书M,问需要多少个箱子。思路:我们只需要用书n的数量去除以容量m,然后判断一下取模有没有余数,有的话就结果......
  • 备战蓝桥杯2(昨天没写)
    还是研究进制转换,十进制变为r进制,用c++写的#include<iostream>#include<string>#include<math.h>usingnamespacestd;intmain(){chara[1000];inty=0,n,x;charz='A';s......
  • SMU Winter 2023 Round #10 (Div.2)
    A.社团招新题目:计网院里面有n个学生。他们中任意一些人都可以成立一个社团。如果社团满足3男有1女,就可以一对情侣一对基。但是院里要求这些社团有如下要求:•为方便......
  • SMU Winter 2023 Round #9 (Div.2)
    A.WhoisThe19thZUCCPCChampion签到题,输出即可。B.JiubeiandOverwatch题目:JiubeilovesplayingOverwatchevenifitisalongtimesincethelastupdate.......
  • 备战蓝桥杯1
    进制转换,以九进制转换为十进制为例子:2022#include<iostream>#include<cmath>#include<string>usingnamespacestd;intmain(){stringstr="2022";intnum=0;for......