首页 > 其他分享 >SMU Winter 2023 Round #13

SMU Winter 2023 Round #13

时间:2023-02-19 22:56:00浏览次数:45  
标签:count 13 Scanner int SMU System new Winter scanner

B.BM算日期

题意:

就是给定两个整数n,k,n是第一个日期,n+k是第二个日期,如果n+k>9999,那么9999 -(n+k-9999)是第二个日期,算这两个日期中有多少个闰年。

思路:

首先根据题目规则得到第二个日期,然后算他们之间的闰年数(包含这两个日期),能被4整除但不能被100整除或者能整除400的是闰年。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int T = scanner.nextInt();
		while(T-->0) {
			int a = scanner.nextInt();
			int b = scanner.nextInt();
			if(a+b>9999) {
				int c = a+b-9999;
				b = 9999-c;
			}else {
				b = a+b;
			}
			int count = 0;
			if(a>b) {
				int temp = a;
				a = b;
				b = temp;
			}
			for(int i = a;i <= b;i++) {
				if(i%4==0&&i%100!=0||i%400==0) {
					count++;
				}
			}
			System.out.println(count);
		}
	}
}

D. Palindrome Hard Problem

题意:

最近 wifePie 学长在研究字符串难题,对回文问题颇有研究,经常一言不合就掏出回文树和马拉车,并且基于深度研究的基础上提出以下问题:

给出 n 个长度相同的,只包含小写字母的字符串,标号为 1 到 n。并且我们约定第 i 个字符串为 si。你可以进行不限次数的如下操作,每个操作都会使得字符串个数减 1:

把 si 拼接到 sj 的后面, 操作后 si 消失。
把 si 拼接到 sj 的前面, 操作后 si 消失。
将 si 和 sj 进行交错排列, 形成一个新的字符串 S。操作后 S 替代 sj 的位置,然后 si 和 sj 消失。(例如 "aaaa" 与 "bbbb" 重构后 得到的串为 "abababab")。
直接舍弃 si。
经过若干次上述操作后,你可以获得一个终极串,问这个终极串最多能分割成多少个回文串。

值得注意的是,上述操作是由你选择如何操作的,你要保证你最终得到的终极串能够分割出的回文串的数量是最多的。

思路:

将每个字母都单独分隔出来时就能得到分割出最多回文串的数量,所以直接将所有字母拼接起来就可以了。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		String[] str = new String[n];
		int sum = 0;
		for(int i = 0;i < n;i++) {
			str[i] = scanner.next();
			sum += str[i].length();
		}
		System.out.println(sum);
	}
}

E.BM 充饥

题意:

输入"kfc",输出kfc的图。

思路:

签到题,按题目输出即可。

H.Hsueh- Draw Progress

题意:

给出两个数,第一个是总量n,第二个是进度m,画出由#和-组成的进度条,#表示完成,-表示未完成,最后还要用百分数表示进度。# 的数量是m个,- 的数量是n-m个。

思路:

就是字符串拼接,这里用StringBuffer要比String快很多,用append方法拼接,然后将两个字符串按格式输出。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int T = scanner.nextInt();
		while(T-->0) {
			int n = scanner.nextInt();
			int m = scanner.nextInt();
			int a = n-m;
			StringBuffer s1 = new StringBuffer();
			StringBuffer s2 = new StringBuffer();
			for(int i = 1; i<=m;i++) {
				s1.append("#");
			}
			for(int i = 1; i<=a;i++) {
				s2.append("-");
			}
			String str1 = s1.toString();
			String str2 = s2.toString();
			int res = m*100/n;
			System.out.println('['+str1+str2+"] "+res+'%');
		}
	}
}

I. BM 旅游

题目:

众所周知 bm 学姐喜欢旅游。这一天他来到了著名的杭师大景点勤园 13-406。该景点中有四个著名的观景台分为 A,B,C,D。

如果只去过上述一个观景台,输出 "Oh dear!!"(没有引号)。
如果去过两个,输出 "BaoBao is good!!"(没有引号)。
如果去过三个,输出 "Bao Bao is a SupEr man///!"(没有引号)。
如果全都去过,输出 "Oh my God!!!!!!!!!!!!!!!!!!!!!"(没有引号)。
如果一个都没去过,输出 "Bao Bao is so Zhai......"(没有引号)。
Input
第一行包含 4 个整数 A,B,C,D(0≤A,B,C,D≤1018)。
A 的每个位的数字和若大于等于 16 或者等于 6 则说明去过观景台 A。
B,C,D 亦如此。
Output
根据题干提示输出 5 种字符串之一。

思路:

可以将该数的每一位都存在一个数组里。怎么得到每一位呢?我们将该数循环%10然后/10,这样就能依次得到个位的数。
数组中的数是从个位开始的,但只是相加就不影响。最后判断一下即可。

代码:

点击查看代码
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long[] abcd = new long[4];
		for(int i = 0;i < 4;i++) {
			abcd[i] = scanner.nextLong();
		}
		long[] arr = new long[20];
		int count = 0;
		int j = 0;
		for(int i = 0;i < 4;i++) {
			for(int k = 0;k <20;k++) {
				arr[k] = 0;
			}
			j=0;
			while(abcd[i]>0) {
				arr[j++] = abcd[i]%10;
				abcd[i] = abcd[i]/10;
			}
			int sum = 0;
			for(int k = 0;k < j;k++) {
				sum+=arr[k];
			}
			if(sum==6||sum>=16) {
				count++;
			}
		}
		
		if(count==0) {
			System.out.println("Bao Bao is so Zhai......");
		}else if(count==1) {
			System.out.println("Oh dear!!");
		}else if(count==2) {
			System.out.println("BaoBao is good!!");
		}else if(count==3) {
			System.out.println("Bao Bao is a SupEr man///!");
		}else if(count==4) {
			System.out.println("Oh my God!!!!!!!!!!!!!!!!!!!!!");
		}
	}
}

J.大扫除

题目:

你是一个住在大豪宅里的富二代「聘请的老青结清洁工」。
你需要给这座高 n 层楼的豪宅清理垃圾。
已知字符 "." 表示没有垃圾,其他任何字符都表示垃圾,每种字符表示一种垃圾。
要求计算整个豪宅每层楼垃圾种类的总和。

Input
第一行包含一个整数 T(1≤T≤10),表示有 T 组数据。
每组数据的第一行有一个数字 n(1≤n≤102), 表示豪宅的层数。
接下来 n 行每行有一个字符串 s(1≤|s|≤106) 这层楼的垃圾情况。
数据保证字符串中没有不可见字符,也没有空字符串。
数据保证总的字符数不超过 107。

Output
每组数据输出一个整数表示整座豪宅每层楼的垃圾总类的和。

思路:

使用一个boolean数组并结合ASCII码来表示一个垃圾是否出现,在该字符第一次出现的时候垃圾次数加1,后面发现如果已经出现了就不加1,在进入下一层的时候都要将数组重新初始化一下,因为如果同一个字符在不同的楼层出现是要统计多次的。

代码:

点击查看代码
import java.util.Scanner;
public class MainJ
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int T = scanner.nextInt();
		int result = 0;
		while(T-->0) {
			int n = scanner.nextInt();
			String[] str = new String[n];
			int count = 0;
			result = 0;
			for(int i = 0;i < n;i++) {
				str[i] = scanner.next();
			}
			for(int i = 0;i < n;i++) {
				boolean[] flag = new boolean[300]; 
				count=0;
				for(int j = 0;j < str[i].length();j++) {
					char op = str[i].charAt(j);
					if(!flag[op]&&op!='.') {
						count++;
					}
					flag[op] = true;
				}
				result += count;				
			}
			System.out.println(result);
		}
	}
}

标签:count,13,Scanner,int,SMU,System,new,Winter,scanner
From: https://www.cnblogs.com/Tcoo/p/17134099.html

相关文章

  • SMU Winter 2023 Round #14
    A.解开束缚缠丝Ⅱ题意:给出n个字母(含大小写),求它们能构成最长回文串的长度。思路:找到里面成对的字符串有多少,然后如果有多出来的就+1,如果没有了就不加了,如果有三个只能算......
  • SMU 冬令营第六周蓝桥杯模拟赛
    A.刷题统计题目:小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做a道题目,周六和周日每天做b道题目。请你帮小明计算,按照计划他将在第几天实现做......
  • 02.13-02.19
      学术间断一周,我想说说福尔摩斯(SherlockHolmes),最近看到一套书,勾起了自己的回忆和侦探之心。本科时便迷了好久,找许多与福尔摩斯相关的视频观看,也有自己心中经典的福尔......
  • 13、神经网络的基本框架----nn.Module的使用
    1、打开pytorch的官网-----官方文档doc里的pytorch-----关于神经网络的一些工具主要在torch.nn里面(nn是neuralnetwork的缩写)2、torch.nn分为不同的类别containers:......
  • Day 13 第五章 栈与队列 |239. 滑动窗口最大值
    239. 滑动窗口最大值题目链接:https://leetcode.cn/problems/sliding-window-maximum/看到题目的第一个想法:想到的使用暴力法把每一种情况给算出来,但是显然这样会超时......
  • 安装etcd3.4.13
    ETCD_VERSION='3.4.13'wgethttps://github.com/etcd-io/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gztar-xvfetcd-v${ETCD_VERS......
  • 刷刷刷 Day 34 | 134. 加油站
    134.加油站LeetCode题目要求在一条环路上有n 个加油站,其中第i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需......
  • 13.转换函数
    1.隐式与显示数据转换--在表达式中Oracle服务器能自动转换--fromvarchar2orchartonumber--fromvarchar2orchartodate--fromnumbertovarchar2......
  • 「CF1392H」ZS Shuffles Cards
    题目点这里看题目。你有\(n+m\)张牌,其中有恰好\(n\)张为数字牌,分别标有\(1,2,3,\dots,n\),剩下的恰好\(m\)张均为鬼牌。一开始,牌被随机打乱,同时你有一个集合\(......
  • [LeetCode] 1331. Rank Transform of an Array 数组序号转换
    Givenanarrayofintegers arr,replaceeachelementwithitsrank.Therankrepresentshowlargetheelementis.Therankhasthefollowingrules:Rankis......