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);
        }
    }
}

 

posted @ 2023-07-26 17:42  伐木工熊大  阅读(28)  评论(0编辑  收藏  举报