2023/7/26
今天完成了几道练习,由于测试点未知,找问题找了挺久的,对PTA这玩意不标测试点就很烦,属实是有点浪费时间了。
下面是新浪微博上曾经很火的一张图:
一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对应 arr[0]=8,index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100。 本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。 输入格式: 输入在一行中给出一个由11位数字组成的手机号码。 输出格式: 为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。 输入样例: 18013820100 输出样例: int[] arr = new int[]{8,3,2,1,0}; int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};
package 啊大大; import java.util.Scanner; public class 出租 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String n; n=sc.next(); int no=0,b[]=new int[10],index[]=new int[11]; int a[]=new int[10]; for(int i=0;i<n.length();i++)//记录含有的数字的种类 { a[n.charAt(i)-'0']=1; } for(int i=9;i>=0;i--) { if(a[i]!=0) { b[no++]=i;//降序 } } for(int i=0;i<n.length();i++) { int x=n.charAt(i)-'0'; int j; for(j=0;j<b.length;j++) { if(b[j]==x) { index[i]=j; break; } } } System.out.print("int[] arr = new int[]{"+b[0]); for(int i=1;i<no;i++) { System.out.print(","+b[i]); } System.out.println("};"); System.out.print("int[] index = new int[]{"+index[0]); for(int i=1;i<11;i++) { System.out.print(","+index[i]); } System.out.println("};"); } }
题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。 输入格式: 输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。 注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。 输出格式: 如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?。 输入样例1: 123 456 输出样例1: 123 + 456 = 579 输入样例2: 22. 18 输出样例2: ? + 18 = ? 输入样例3: -100 blabla bla...33 输出样例3: ? + ? = ?
package 啊大大; import java.util.Scanner; public class A加B { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String a=sc.next(); String b=sc.next(); int c=0,e=1; boolean flag1=false,flag2=false; for(int i=a.length()-1;i>=0;i--) { if(a.charAt(i)>='0'&&a.charAt(i)<='9') { c+=((a.charAt(i)-'0')*e); e*=10; } else { flag1=true; break; } } if(c<1||c>1000) { flag1=true; } int f=0,h=1; for(int i=b.length()-1;i>=0;i--) { if(b.charAt(i)>='0'&&b.charAt(i)<='9') { f+=((b.charAt(i)-'0')*h); h*=10; } else { flag2=true; break; } } if(f<1||f>1000) { flag2=true; } if(flag1) { System.out.print("?"); } else { System.out.print(c); } System.out.print(" + "); if(flag2) { System.out.print("?"); } else { System.out.print(f); } System.out.print(" = "); if(flag2||flag1) { System.out.print("?"); } else { System.out.print(c+f); } } }