输入在一行中给出钻石的需求量 N(不超过 107 的正整数,以微克拉为单位)和人工培育钻石的速度 v(1 ≤ v ≤ 200,以微克拉/天为单位的整数)。
输出格式
在一行中输出培育 N 微克拉钻石需要的整数天数。不到一天的时间不算在内。
题解
1 2 3 4 5 6 7 8 9 10
publicclassMain{
publicstaticvoidmain(String[] args){ Scanner scanner =newScanner(System.in); int n = scanner.nextInt(); int v = scanner.nextInt(); System.out.println(n / v); }
publicstaticvoidmain(String[] args){ Scanner scanner =newScanner(System.in); int n = scanner.nextInt();// 纸牌初始数量 int c = scanner.nextInt();// 推的次数 System.out.printf("%d %d", c &1, n <<(c >>1)); }
输入在一行中先给出 N(1 < N < 10),随后一行给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出格式
输出所有可能组合出来的2位数字的和。
题解
注意一个数本身不能和它自身拼成两位数就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
publicclassMain{
publicstaticvoidmain(String[] args){ Scanner scanner =newScanner(System.in); int n = scanner.nextInt(); int[] input =newint[n]; int ans =0; for(int i =0; i != n;++i) input[i]= scanner.nextInt(); for(int i =0; i != n;++i){ for(int k =0; k != n;++k){ if(i != k) ans += input[i]*10+ input[k]; } } System.out.println(ans); }
publicstaticvoidmain(String[] args){ Scanner scanner =newScanner(System.in); int n = scanner.nextInt(); int[][] input =newint[n][n]; for(int y =0; y != n;++y){ for(int x =0; x != n;++x){ input[y][x]= scanner.nextInt(); } } for(int y =0; y != n;++y){ for(int x =0; x != n;++x){ if(check(input, n, x, y)){ System.out.printf("%d %d", y, x); return; } } } System.out.println("NONE"); }
输入第一行是两个正整数 N,M (1 ≤ M ≤ N ≤ 30),表示本次天梯赛有 N 道题目,吉老师现在做完了 M 道。
接下来 N 行,每行是一个符合题目描述的字符串,表示天梯赛的题目内容。吉老师会按照给出的顺序看题——第一行就是吉老师看的第一道题,第二行就是第二道,以此类推。
输出格式
在一行中输出吉老师当前正在做的题目对应的题面(即做完了 M 道题目后,吉老师正在做哪个题)。如果吉老师已经把所有他打算做的题目做完了,输出一行Wo AK le。
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
publicclassMain{
publicstaticvoidmain(String[] args){ Scanner scanner =newScanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); scanner.nextLine(); for(int i =0; i != n;++i){ String text = scanner.nextLine(); if(text.contains("easy")|| text.contains("qiandao"))continue; if(m--==0){ System.out.println(text); return; } } System.out.println("Wo AK le"); }
publicstaticvoidmain(String[] args)throwsIOException{ int t =read(); for(int i =0; i != t;++i){ int n =read(); long a =read(), b =read(); if(n <3){// 排除掉 n = 1 | 2 的情况 System.out.println(min(a, b)); continue; } long[] ans ={ // 1:能住三人间的都住三人间,其他人住双人间(最多一个) (n /3)* b +min(n %3,1)* a, // 2:能住双人间的都住双人间,其它住三人间(最多一个) (n &1)* b +(n >>1)* a, // 3:所有人都住三人间 ((n +2)/3)* b, // 4:所有人都住双人间 ((n +1)>>1)* a, // 5:在(2)的基础上,将一个双人间中的两个人分到三人间 b +((n -2)>>1)* a, // 6:在(1)的基础上,将三人间中的两个人分到双人间 ((n -2)/3)* b +(a <<1) }; long res =Long.MAX_VALUE; for(long value : ans){ res =min(res, value); } System.out.println(res); } }
/** 没有考虑负数的快读 */ staticintread()throwsIOException{ int x =0; int ch =System.in.read(); while(ch <'0'|| ch >'9'){ ch =System.in.read(); } while(ch >='0'&& ch <='9'){ x =(x <<1)+(x <<3)+(ch ^48); ch =System.in.read(); } return x; }
在第一行有两个数字n,m(n <= 100, n < m),其中 n 为入队的数字个数,m 代表操作数。
接下来 m 行,每行一个数字,1 或者 0,代表不同的操作。
输出格式
输出操作后队列的每个数字,数字间以空格分隔,最后一个数字后没有空格。
题解
直接模拟即可,PTA 上用 Java 过不了这道题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
publicclassMain{
publicstaticvoidmain(String[] args){ Scanner scanner =newScanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); Deque<Integer> deque =newArrayDeque<>(n); for(int i =0; i != m;++i){ int op = scanner.nextInt(); if(op ==0) deque.add(deque.size()+1); else deque.add(deque.removeFirst()); } System.out.println(deque.stream().map(String::valueOf) .collect(Collectors.joining(" "))); }
publicstaticvoidmain(String[] args)throwsIOException{ int n =read(); int[] sum =newint[100001]; for(int i =1; i <= n;++i){ int k =read(); sum[i]= k + sum[i -1]; } int ans =0; for(int i =0; i != n;++i){ for(int k = i +1; k <= n;++k){ ans =Math.max(ans, sum[k]- sum[i]); } } System.out.println(ans); }
/** 考虑负数的快读 */ staticintread()throwsIOException{ int x =0, t =1; int ch =System.in.read(); while(ch <'0'|| ch >'9'){ if(ch =='-') t =-1; ch =System.in.read(); } while(ch >='0'&& ch <='9'){ x =(x <<1)+(x <<3)+(ch ^48); ch =System.in.read(); } return x * t; }
publicstaticvoidmain(String[] args)throwsIOException{ int r =read(); int[] prev =newint[r +2]; int[] now =newint[r +2]; for(int i =1; i <= r;++i){ for(int k =1; k <= i;++k){ int value =read(); now[k]=Math.max(prev[k -1], prev[k])+ value; } int[] tmp = prev; prev = now; now = tmp; } int ans =0; for(int i =1; i <= r;++i){ ans =Math.max(ans, prev[i]); } System.out.println(ans); }
/** 快读 */ staticintread()throwsIOException{ int x =0, t =1; int ch =System.in.read(); while(ch <'0'|| ch >'9'){ if(ch =='-') t =-1; ch =System.in.read(); } while(ch >='0'&& ch <='9'){ x =(x <<1)+(x <<3)+(ch ^48); ch =System.in.read(); } return x * t; }
publicstaticvoidmain(String[] args)throwsIOException{ for(int i =1; i !=10001;++i) box[i]= i; boolean[] flag =newboolean[10001]; int[] input =newint[10001]; int n =read(); // 读入并处理部落信息 for(int i =0; i != n;++i){ int k =read(); for(int j =0; j != k;++j){ input[j]=read(); flag[input[j]]=true; for(int x =0; x <= j;++x)merge(input[x], input[j]); } } // 统计人数和互不相干的部落的数量 boolean[] tmp =newboolean[10001]; int size =0, amount =0; for(int i =0; i < flag.length; i++){ if(flag[i]){ ++size; if(!tmp[find(i)]){ tmp[find(i)]=true; ++amount; } } } System.out.printf("%d %d\n", size, amount); int q =read(); // 检查两个人是否有关系 for(int i =0; i != q;++i){ int a =read(), b =read(); System.out.println(find(a)==find(b)?'Y':'N'); } }
/** 不考虑负数的快读 */ staticintread()throwsIOException{ int x =0; int ch =System.in.read(); while(ch <'0'|| ch >'9'){ ch =System.in.read(); } while(ch >='0'&& ch <='9'){ x =(x <<1)+(x <<3)+(ch ^48); ch =System.in.read(); } return x; }
publicstaticvoidmain(String[] args)throwsIOException{ int n =read(), m =read(); int[] intake =newint[n]; Map<Integer,List<Pair>> graph =newTreeMap<>(); for(int i =0; i != m;++i){ int start =read(), end =read(); int time =read(); ++intake[end]; graph.computeIfAbsent(start, it ->newLinkedList<>()).add(newPair(end, time)); } int[] time =newint[n]; while(!graph.isEmpty()){ boolean flag =true; for(int i =0; i != n;++i){ if(intake[i]==0){ intake[i]=-1; List<Pair> list = graph.remove(i); if(list ==null)continue; flag =false; for(Pair pair : list){ int end = pair.end; --intake[end]; time[end]=Math.max(time[end], time[i]+ pair.time); } } } if(flag)break; } if(!graph.isEmpty())System.out.println("Impossible"); else{ int ans =0; for(int i : time){ if(i > ans) ans = i; } System.out.println(ans); } }
/** 不考虑负数的快读 */ staticintread()throwsIOException{ int x =0; int ch =System.in.read(); while(ch <'0'|| ch >'9'){ ch =System.in.read(); } while(ch >='0'&& ch <='9'){ x =(x <<1)+(x <<3)+(ch ^48); ch =System.in.read(); } return x; }