目录
P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here
P5733 【深基6.例1】自动修正
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
String str=input.next();
String str1=str.toUpperCase();
System.out.println(str1);
}
}
P1914 小书童——凯撒密码
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String str=sc.next();
char[] array=str.toCharArray();
StringBuilder password=new StringBuilder();
for(char ch: array){
if(ch>='a'&&ch<='z'){
//向后移动n位
ch=(char)('a'+(ch-'a'+n)%26);
}
password.append(ch);
}
String str1=password.toString();
System.out.println(str1);
}
}
P1125 [NOIP2008 提高组] 笨小猴
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.next();
char[] array=str.toCharArray();
int[] counts=new int[26];
for(char ch:array){
if(ch>='a'&&ch<='z'){
//每个索引对于一个小写字母
counts[ch-'a']++;
}
}
int maxn=0;
int minn=Integer.MAX_VALUE;
for(int count:counts){
if(count!=0){
maxn=Math.max(maxn,count);
minn=Math.min(minn,count);
}
}
boolean isLucky=(maxn-minn>1)&&isPrime(maxn-minn);
if(isLucky){
System.out.println("Lucky Word");
System.out.println(maxn-minn);
}else{
System.out.println("No Answer");
System.out.println(0);
}
}
private static boolean isPrime(int n){
if(n<=1){
return false;
}
for(int i=2;i*i<=n;i++){
if(n%i==0){
return false;
}
}
return true;
}
}
P1957 口算练习题
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
String operation = "";
for (int i = 0; i < num; i++) {
String line = scanner.nextLine();
String result = "";
//使用正则表达式分割字符串,将分割后的子字符串放在数组中
String[] array = line.split("\\s+");
int a, b;
if (line.startsWith("a")) {
operation = "a";
a = Integer.parseInt(array[1]);
b = Integer.parseInt(array[2]);
} else if (line.startsWith("b")) {
operation = "b";
a = Integer.parseInt(array[1]);
b = Integer.parseInt(array[2]);
} else if (line.startsWith("c")) {
operation = "c";
a = Integer.parseInt(array[1]);
b = Integer.parseInt(array[2]);
} else {
a = Integer.parseInt(array[0]);
b = Integer.parseInt(array[1]);
}
switch (operation) {
case "a":
result = a + "+" + b + "=" + (a+b);
break;
case "b":
result = a + "-" + b + "=" + (a-b);
break;
case "c" :
result = a + "*" + b + "=" + (a*b);
break;
}
System.out.println(result + "\n" + result.length());
}
scanner.close();
}
}
P5015 [NOIP2018 普及组] 标题统计
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
String str1=str.replaceAll("[\\s\n]+","");
System.out.println(str1.length());
}
}
P5734 【深基6.例6】文字处理软件
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
String start = sc.next();
while(sc.hasNext()) {
int num=sc.nextInt(); //执行操作的序号
switch (num) {
case 1:
start = start.concat(sc.next());
System.out.println(start);
break;
case 2:
int a=sc.nextInt(),b=sc.nextInt();
start=start.substring(a,a+b);
System.out.println(start);
break;
case 3:
int index=sc.nextInt(); //插入的起始位置
String sub=sc.next(); //子串
start=start.substring(0,index)+sub+start.substring(index);
System.out.println(start);
break;
case 4:
System.out.println(start.indexOf(sc.next()));
break;
}
}
}
}
P1308 [NOIP2011 普及组] 统计单词数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num=0,flag=0,index=0;
String s= sc.nextLine().toLowerCase();
String str=sc.nextLine().toLowerCase();
String[] arr=str.split(" ");
for(int i=0;i<arr.length;i++){
if(s.equals(arr[i])){
num++;
}
if(num==1){
flag=1;
}
if(flag==0){
index+= arr[i].length()+1;
}
}
if(num==0){
System.out.println("-1");
}else{
System.out.println(num+" "+index);
}
}
}
P1765 手机
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count=0;
String str=sc.nextLine();
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='a'||str.charAt(i)=='d'||str.charAt(i)=='g'||str.charAt(i)=='j'||str.charAt(i)=='m'||str.charAt(i)=='p'||str.charAt(i)=='t'||str.charAt(i)=='w'){
count++;
}else if(str.charAt(i)=='b'||str.charAt(i)=='e'||str.charAt(i)=='h'||str.charAt(i)=='k'||str.charAt(i)=='n'||str.charAt(i)=='q'||str.charAt(i)=='u'||str.charAt(i)=='x'){
count+=2;
}else if(str.charAt(i)=='c'||str.charAt(i)=='f'||str.charAt(i)=='i'||str.charAt(i)=='l'||str.charAt(i)=='o'||str.charAt(i)=='r'||str.charAt(i)=='v'||str.charAt(i)=='y'){
count+=3;
}else if(str.charAt(i)=='s'||str.charAt(i)=='z'){
count+=4;
}else{
count++;
}
}
System.out.print(count);
}
}
P3741 honoka的键盘
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count=0;
int n=sc.nextInt();
sc.nextLine();//消耗换行符
String str=sc.nextLine();
while(str.contains("VK")){
str=str.replaceFirst("VK","XX");
count++;
}
if(str.contains("VV")||str.contains("KK")){
count++;
}
System.out.println(count);
}
}
P1321 单词覆盖还原
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s=sc.next();
int count1=0;
int count2=0;
char[] s1=s.toCharArray();
for(int i=0;i<s1.length-2;i++){
if(s1[i]=='b'||s1[i+1]=='o'||s1[i+2]=='y'){
count1++;
}
}
for(int i=0;i<s1.length-3;i++){
if(s1[i]=='g'||s1[i+1]=='i'||s1[i+2]=='r'||s1[i+3]=='l'){
count2++;
}
}
System.out.println(count1);
System.out.println(count2);
}
}
P1553 数字反转(升级版)
import java.util.Scanner;
/*
整数反转 升级版
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
int index=0;
for(int i=0;i<s1.length();i++) {
if(s1.charAt(i)=='.') {
index=1;
break;
} else if(s1.charAt(i)=='/') {
index=2;
break;
} else if(s1.charAt(i)=='%') {
index=3;
break;
}
}
String[] s2 = s1.split("[.|//|%]"); //获取到分隔后的一部分或两部分
StringBuilder sb1 = new StringBuilder(s2[0]);
StringBuilder sb2 = null;
if(index==1 || index==2) { //若可以分成两部分就分成两部分
sb2 = new StringBuilder(s2[1]);
}
sb1.reverse();
switch (index) {
case 0:
System.out.println(Long.parseLong(String.valueOf(sb1)));
break;
case 1:
long l=Long.parseLong(String.valueOf(sb2));//转换成长整型
StringBuilder sb3 = new StringBuilder(String.valueOf(l));//转换成字符串
System.out.println(Long.parseLong(String.valueOf(sb1))+"."+sb3.reverse());
break;
case 2:
System.out.println(Long.parseLong(String.valueOf(sb1))+"/"+Long.parseLong(String.valueOf(sb2.reverse())));
break;
case 3:
System.out.println(Long.parseLong(String.valueOf(sb1))+"%");
break;
}
}
}
P1603 斯诺登的密码
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("one", "01");
map.put("a", "01");
map.put("two", "04");
map.put("three", "09");
map.put("four", "16");
map.put("five", "25");
map.put("six", "36");
map.put("seven", "49");
map.put("eight", "64");
map.put("nine", "81");
map.put("eleven", "21");
map.put("twelve", "44");
map.put("thirteen", "69");
map.put("fourteen", "96");
map.put("fifteen", "25");
map.put("sixteen", "56");
map.put("seventeen", "89");
map.put("eighteen", "24");
map.put("nineteen", "61");
List<String> list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String[] words = scanner.nextLine().trim().split("\\s+");
for (String s : words) {
if (map.containsKey(s)) {
list.add(map.get(s));
}
}
if (list.isEmpty()) {
System.out.println(0);
}
StringBuilder str = new StringBuilder();
//对从哈希表中的数字字符串进行排序
list.sort(Comparator.naturalOrder());
//拼接字符串
for (String s : list) {
str.append(s);
}
String result = str.toString();
//字符串不能以0为开头
if (result.startsWith("0")) {
result = result.substring(1);
}
System.out.println(result);
}
}
P1200 [USACO1.1] 你的飞碟在这儿 Your Ride Is Here
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str1=sc.next();
String str2=sc.next();
int count1=change(str1);
int count2=change(str2);
if(count1%47==count2%47){
System.out.println("GO");
}else{
System.out.println("STAY");
}
}
private static int change(String name){
int value=1;
for(char ch:name.toCharArray()){
value*=((int)ch-64);
}
return value;
}
}
P1597 语句解析
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
int a=0,b=0,c=0;
char[] arr=str.toCharArray();
for(int i=0;i<arr.length;i+=5)
{
if(arr[i]=='a'){
if(arr[i+3]=='a'){
a=a;
}else if(arr[i+3]=='b'){
a=b;
}else if(arr[i+3]=='c'){
a=c;
}else{
a=arr[i+3]-'0';
}
}
if(arr[i]=='b'){
if(arr[i+3]=='a'){
b=a;
}else if(arr[i+3]=='b'){
b=b;
}else if(arr[i+3]=='c'){
b=c;
}else{
b=arr[i+3]-'0';
}
}
if(arr[i]=='c'){
if(arr[i+3]=='a'){
c=a;
}else if(arr[i+3]=='b'){
c=b;
}else if(arr[i+3]=='c'){
c=c;
}else{
c=arr[i+3]-'0';
}
}
}
System.out.println(a+" "+b+" "+c);
}
}
P1598 垂直柱状图
import java.util.Scanner;
/*
整数反转 升级版
*/
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int s[]=new int[26]; //记录26个字母的个数
String str; //储存当前一行的字符串
//一共有4行数据
for(int i=0;i<=3;i++) {
str=in.nextLine(); //输入一行字符串
for(int j=0;j<str.length();j++) {
if(str.charAt(j)>='A' && str.charAt(j)<='Z') {
s[str.charAt(j)-'A']++; //记录A-Z的字符的个数
}
}
}
//找出出现字母的最大值
int max=0;
for(int i=0;i<=25;i++) {
if(s[i]>max) {
max=s[i];
}
}
//处理输出的字符串
for(int i=max;i>=1;i--) { //一共有max行
for(int j=0;j<26;j++) { //一共26个字母
if(s[j]==i){
s[j]--;
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println(); //换行
}
System.out.print("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
}
}