UVALive 5739|User Names|模拟
一个大学电脑系统通过下面的规则确定学生的用户名:
1. 用户名长度不超过MAXLENMAXLEN个字符。
2. 用户名第一个字符为这个人的first name,转换成小写,忽略非字母的字符
3. 把这个人的last name加到用户名后面(小写),如果超出MAXLENMAXLEN,只保留前MAXLENMAXLEN个字符。
4. 如果规则1~3产生的用户名在数据库中已经存在,若用户名长度为MAXLENMAXLEN,则用户名后面删去最后1个字符,加0~9(按顺序),以保证长度不会超过MAXLENMAXLEN;否则直接加0~9。
5. 如果规则1~4产生的用户名在数据库中已经存在,若用户名长度为MAXLENMAXLEN或MAXLEN−1MAXLEN-1,则用户名后面删去最后几个字符,加10~99(按顺序),以保证长度不会超过MAXLENMAXLEN;否则直接加10~99。
6. 假设上述规则能覆盖所有输入情况。
输入
输入有多组数据,对于每组数据,第一行2个正整数n(n≤200)n(n\leq200)和MAXLENMAXLEN。接下来nn行,每行一个学生的姓名,不超过80个字符。first name, middle name, last name用空格隔开。大小写和符号不定。
n=MAXLEN=0n=MAXLEN=0表示输入结束。
输出
对于每组数据,第一行包含数据组序号,接下来几行每行一个用户名,对应输入的学生姓名。
样例输入
2 6
Jenny Ax
Christos H Papadimitriou
11 8
Jean-Marie d’Arboux
Jean-Marie A d’Arboux
Jean-Marie B d’Arboux
Jean-Marie C d’Arboux
Jean-Marie D d’Arboux
Jean-Marie D d’Arboux
Jean-Marie F d’Arboux
Jean-Marie G d’Arboux
Jean-Marie H d’Arboux
Jean-Marie I d’Arboux
Jean-Marie J d’Arboux
11 9
Jean-Marie d’Arboux
Jean-Marie A d’Arboux
Jean-Marie B d’Arboux
Jean-Marie C d’Arboux
Jean-Marie D d’Arboux
Jean-Marie D d’Arboux
Jean-Marie F d’Arboux
Jean-Marie G d’Arboux
Jean-Marie H d’Arboux
Jean-Marie I d’Arboux
Jean-Marie J d’Arboux
0 0
样例输出
Case 1
jax
cpapad
Case 2
jdarboux
jdarbou1
jdarbou2
jdarbou3
jdarbou4
jdarbou5
jdarbou6
jdarbou7
jdarbou8
jdarbou9
jdarbo10
Case 3
jdarboux
jdarboux1
jdarboux2
jdarboux3
jdarboux4
jdarboux5
jdarboux6
jdarboux7
jdarboux8
jdarboux9
jdarbou10
题解
Java大法好
import java.util.*;
import java.util.stream.Collectors;public class p5739 {public static void main(String[] args) throws Exception {Scanner scanner = new Scanner(System.in);int kase = 0;while (true) {int n = scanner.nextInt(), maxlen = scanner.nextInt();if (n == 0 && maxlen == 0) break;scanner.nextLine();HashSet<String> set = new HashSet<>();System.out.printf("Case %d\n", ++kase);while (--n >= 0) {String name = scanner.nextLine();String[] names = name.split(" ");String first = names[0];String last = names[names.length - 1];String original = new StringBuilder().appendCodePoint(first.toLowerCase().chars().filter(Character::isAlphabetic).findFirst().getAsInt()).append(last.toLowerCase().codePoints().filter(Character::isAlphabetic).collect(StringBuilder::new,StringBuilder::appendCodePoint, StringBuilder::append).toString()).toString();if (original.length() > maxlen)original = original.substring(0, maxlen);String ans = original;int len = 1, roll = 0, sq = 1;while (set.contains(ans)) {++roll;if (roll >= sq * 10) {++len; sq *= 10;}if (maxlen - len > original.length())ans = original + roll;elseans = original.substring(0, maxlen - len) + roll;}set.add(ans);System.out.println(ans);}}}
}
UVALive 5739|User Names|模拟相关推荐
- UVALive 7139 Rotation(模拟)
思路:模拟题,留意到其实左右操作是会抵消的,所以只用考虑上下就好了 #include<iostream> #include<cstdio> #include<vector ...
- UVALive - 7139(差分+模拟)
题目链接 参考 题意 N*M的网格,一辆车沿着网格线按给定路线走,每个网格里有一个人,人的视线始终看着车,问这些人净转圈数的平方和. 分析 由于车的起点和终点都为左上角,且每个格子里的人永远面对着车, ...
- UVALive 6277 - Addictive Bubbles (模拟)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- 边缘计算 ai_什么是边缘AI计算?
边缘计算 ai Edge AI starts with edge computing. Also called edge processing, edge computing is a network ...
- UVALive 6093 Emergency Room --优先队列实现的模拟
题意:给n个医生,这些医生有一个上班时间,然后给一些病人,病人有一个到达的时间,以及一些诊断,诊断有property(优先级)和duration(诊断时间)这两个属性,每个病人可能要诊断多次,最后问每 ...
- UVALive - 7511 Multiplication Table(暴力+模拟)
题目链接:点击查看 题目大意:给出一个二维矩阵表示无限大的乘法表,每个位置的值都等于 i * j ,现在给出一个 n * m 的矩阵,现在需要判断该矩阵是否为乘法表的一个子矩阵 题目分析:训练时以为是 ...
- UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
题意:给一个元素周期表的元素符号(114种),再给一个串,问这个串能否有这些元素符号组成(全为小写). 解法1:动态规划 定义:dp[i]表示到 i 这个字符为止,能否有元素周期表里的符号构成. 则有 ...
- UVALive 7324 ASCII Addition (模拟)
ASCII Addition 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/A Description Nowadays, th ...
- UVALive - 6440(模拟)
题目链接:https://vjudge.net/contest/241341#problem/G 题目大意:输入一个N,n次操作.对于第一种操作增加一个病人,告诉病人的t0,st0,r.第二种操作,在 ...
最新文章
- android 自定义音乐圆形进度条,Android自定义View实现音频播放圆形进度条
- PyTorch cat
- python简单编程例子-Python实现的简单万年历例子分享
- cisco路由交换防火墙命令配置详解
- 如何在FineUIMvc(ASP.NET MVC)中显示复杂的表格列数据(列表和对象)?
- 使用cisco 2500路由器实现ADSL接入
- OPC DA通讯 KEP6.4 DCOM 配置脚本
- scala定义函数(六)
- java 8 map reduce_java8之Lambda表达式 4:MapReduce开发案例
- c++ 输出格式控制
- linux源代码阅读笔记 高速缓冲区管理
- ISO27001风险评估实施流程(详细版)
- 实用:Google Chrome(谷歌浏览器)键盘快捷键大全
- Java面试题(140多道高频面试题2022版)
- wacom怎么调压感_要怎么设置PS的画笔 才能充分利用到数位板压感?
- GET POST 区别!别听他们扯犊子,越看越气人
- Firefox火狐浏览器打开页面链接的方式的设置
- Hive纵向表转横向表
- webmatrix3 php,webmatrix
- 成都大数据培训之SpringBoot中关于JDBC的方式运用
热门文章
- IOU, GIOU, DIOU, CIOU
- 华为路由器console口加密 telnet远程登录 DHCP server在路由器中的两种写法
- 这些学校招收!!!应用统计学专硕(025200),你知道吗?
- cnn keras 实现_在iOS应用中实现Keras CNN
- session在html页面跳转,session跨页面传值为空
- 一花独放不是春,华为与用友共同构建百花齐放生态
- 使用python批量将word转为pdf
- 中国 省级 单位 的 字母 简称 和 字母 排列 顺序
- java学籍管理系统课设报告,java课程设计学籍管理系统.doc
- 曾轶可16首原创歌词 小生整理完整版