PAT乙
练习算法
不更了
不更了
展开
-
1024 科学计数法 (20分)【java题解】【详解】
题解:这个题连贯的逻辑比较强,所以最好把每一步的思路写下来,这样速度才能快,尽量使用最快IO流,时间最重要。1.取数字符号 数字字符串num 指数index 小数点位置point 小数点左边个数left 小数点右边个数right2 将 String转成StringBuffer更好操作 去掉小数点3. index>0,index>=right 右边填充 (index-right) 个0index<right ...原创 2020-11-23 04:19:31 · 301 阅读 · 0 评论 -
1023 组个最小数 (20分)【java题解】
题解:1.用空间为10的数组存数字对应值2.找最小的第一个数字3.输出数组,值0的pass掉import java.io.*;public class Main { public static void main(String[] args) throws IOException { // 使用io流包装 StreamTokenizer in = new StreamTokenizer(new BufferedReader(new...原创 2020-11-23 02:17:36 · 217 阅读 · 0 评论 -
1022 D进制的A+B (20分)【java题解】【80ms】
题解使用toUnsignedString()即可我有仔细研读过toUnsignedString(),有兴趣可以看看第3章 java的基本程序设计结构【补缺学习】【注释与数据类型】【核心技术卷I】import java.io.*;public class Main { public static void main(String[] args) throws IOException { // 使用io流包装 StreamT...原创 2020-11-22 13:52:02 · 132 阅读 · 0 评论 -
1021 个位数统计 (15分)【java题解】【求解决in.sval 输入数字字符串为null的问题】
题解用数组下标存对应值 在使用StreamTokenizer 的 in.sval的时候 发现输入数字,in.sval读取不到为null,不知道怎么解决,只好改用BufferedReader import java.io.*;public class Main { public static void main(String[] args) throws IOException { // 使用io流包装// StreamTok...原创 2020-11-22 13:35:14 · 247 阅读 · 1 评论 -
1020 月饼 (25分)【java题解】
题解:贪心算法的简单运用 按单价贪心import java.io.*;import java.util.Arrays;import java.util.Comparator;public class Main { public static void main(String[] args) throws IOException { // 使用io流包装 StreamTokenizer in =new Stream...原创 2020-11-22 05:44:57 · 543 阅读 · 0 评论 -
1019 数字黑洞 (20分)【java题解】
题解:1.将输入的数字拆分装进数组2.判断数组上的各位数字是否相等3.是输出 n- n= 00004..否将num循环重复 1 ;将数组排序,得到降序A,升序B;进而得到num; 直至 num == 6174import java.io.*;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOExce...原创 2020-11-22 04:31:45 · 181 阅读 · 0 评论 -
1018 锤子剪刀布 (20分)【java超时已解决】
题解根据逻辑大家应该能写的出来,主要是有一个测试用例 java超时,解决思路如下:我目前已知并且能够使用的最快IO流就是 StreamTokenizer in =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));这是不超时...原创 2020-11-22 02:38:25 · 257 阅读 · 0 评论 -
1017 A除以B (20分)【java python题解】
题解:这题java来做容易超时,除法和商那里其实还可以更加优化,先留个坑。考完再填这个坑. 不过遇到大数我还是选择用python来做,哈哈。下面是python的做法A, B = map(int, input().split(' '))print(A//B,A%B)没错,两行就搞定了 import java.io.BufferedReader; import java.io.IOException; import java.io.Inp...原创 2020-11-21 22:41:08 · 217 阅读 · 1 评论 -
1016 部分A+B (15分)【java题解】
题解:有字符串 和 数学运算 这两种比较快写的办法 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); long s1,s2,c1,c2; s1=sc.nextLong(); ...原创 2020-11-21 21:53:27 · 235 阅读 · 1 评论 -
1015 德才论 (25分)【Java题解】
题解首先说明这题用java来做会超时T_T ,今天用java 类数组+Array.sort()敲了一套代码,发现会超时,然后看网上是用ArrayList 容器 我就把 数组改成容器来做 ,发现还是超时,最后用了C++来做,好家伙,C++的测试点4也快超时 怪不得java总是超时。思路:1.对人标记分类 (隐藏的 一级分类)2.用compare() 多级排序,其对象带入sort中。#include <bits/stdc++.h>using na...原创 2020-11-21 21:32:26 · 360 阅读 · 0 评论 -
1014 福尔摩斯的约会 (20分)【java题解】
java题解考察字符串基础,主要是逻辑表达式也要合理。 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String str1=sc.nextLine(),str2=sc.nextLine(),str3=sc....原创 2020-11-19 22:56:28 · 170 阅读 · 1 评论 -
1013 数素数 (20分)【java题解】【时间优化】
题解:时间超时的看这里:用java 一不注意就容易时间超时,内存不足。所以如果没有高级函数之类的语法,可以用c和python 来做。除了比赛外,走java方向的,推荐用java 淦她。尽量用空间换时间,循环的次数越地越好(素数算法越快越好),循环内的判断次数也越好越少。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner...原创 2020-11-12 22:18:22 · 109 阅读 · 0 评论 -
1012 数字分类 (20分)【java题解】
题解:。。。。。。。。。。。。。。。。。手速吧import java.util.Scanner;public class Main { public static void main(String[] args) { int n,A1=0,A2=0,A3=0,A4=0,A5=0; int f1=0,f2=0,f3=0,f4=0,f5=0; Scanner sc=new Scanner(System.in); ...原创 2020-11-12 21:18:02 · 150 阅读 · 0 评论 -
1011 A+B 和 C (15分)【java题解】【大整数】
题解: 用大整数类BigInteger import java.math.BigInteger;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); BigInteger num1...原创 2020-11-12 17:24:31 · 79 阅读 · 0 评论 -
1010 一元多项式求导 (25分)【java题解】
题解:分情况:非零多项式 b=0 过滤 b!=0 控制格式输出零多项式 0 0import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a , b , f= 0; while (sc.hasNext...原创 2020-11-12 17:04:13 · 127 阅读 · 0 评论 -
1009 说反话 (20分) 【java题解】【vector】
import java.util.Scanner;import java.util.Vector;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); Vector<String> vec = new Vector<>(); while (sc.hasNext()){ ...原创 2020-11-12 15:01:49 · 210 阅读 · 0 评论 -
1008 数组元素循环右移问题 (20分)【java题解】
题解:与其在输入后 移动数组,不如就在输入时就开始 ‘移动’import java.util.*;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int[] arr=new int[n]...原创 2020-10-31 19:40:01 · 183 阅读 · 0 评论 -
1007 素数对猜想 (20分)【Java题解】
题解:1.判断出素数,用数组存起来2.记录相差 2 的的素数对个数3.输出即可import java.util.*;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(),ct=0,c=0; int[] num=new int[n]; f...原创 2020-10-31 15:27:27 · 182 阅读 · 0 评论 -
1006 换个格式输出整数 (15分)【java题解】
题解:import java.util.*;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); for (int i=0;i<(n/100);i++) System.out.print("B"); f...原创 2020-10-31 15:22:48 · 184 阅读 · 0 评论 -
1005 继续(3n+1)猜想 (25分)(java题解)
题解:先排序,然后对所有数字进行3n+1猜想,由于数据不大,可用record数组标记,即 将猜想中出现的数字标记为1;然后 对所有输入数字遍历,将标记为0的数字从大到小输出即可。唯一不理解的就是record数组开的空间比我预算的要大的多一些,如果有大佬知道这为什么,就请告诉我一下吧。import java.util.*;public class Main { public static void main(String[] args) { int n; ...原创 2020-10-31 11:56:24 · 576 阅读 · 3 评论 -
1004 成绩排名 (20分) (java)(记录)
import java.util.Scanner;public class Main { private static class student{ String name; String id; int score; } public static void main(String[] args) { int n=0; Scanner sc=new Scanner(System.in); ...原创 2020-10-28 00:58:13 · 403 阅读 · 0 评论 -
1002 写出这个数 (20分) (java)(记录)
import java.util.*;public class Main { public static void main(String[] args) { String s; int sum=0; String[] str={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; Scanner input=new Scanner(System.in); ...原创 2020-10-28 00:37:27 · 407 阅读 · 0 评论 -
1001 害死人不偿命的(3n+1)猜想 (15分) (java c) (题解)
题解:这是浙大PAT的第一题,题意比较简单。算法如下:1.算法开始。2.如果n!=1,下一步。否则跳到第五步。3.如果n是偶数,n/=2,step++,回到第二步。否则进行下一步。4.如果n是奇数,n=(3n+1)/2,step++,回到第二步。5.输出step。6.算法结束。C++代码#include <iostream>using namespace std;int main(){ int n,step=0; cin>>n;..原创 2020-10-28 00:08:41 · 504 阅读 · 0 评论 -
1003 我要通过! (20分) 正则表达式 (java)(题解)
思路:推出足够多正确的字符串找规律, 1. PAT ->>> PAAT ->>> PAAAT2.APATA ->>> APAATAA ->>> APAAAPAAA3.AAPATAA ->>> AAPAATAAAA ->>> AAPAAATAAAAAA需要注意的是,要用初始正确的去推导。发现了一个规律 ,P左边A的数量 c1 ,P T...原创 2020-10-27 23:42:47 · 461 阅读 · 0 评论