01:反向输出一个三位数

描述:将一个三位数反向输出。

输入:一个三位数n。

输出:反向输出n。

样例输入:100

样例输出:001

import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        System.out.println(new StringBuffer(cin.next()).reverse());
    }
}

02:删除单词后缀

描述:给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。

输入:输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。

输出:输出按照题目要求处理后的单词。

样例输入:referer

样例输出:refer

import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        String s=cin.next();
        if(s.endsWith("er")||s.endsWith("ly")){
            System.out.println(s.substring(0,s.length()-2));
        }
        else if(s.endsWith("ing")){
            System.out.println(s.substring(0,s.length()-3));
        }
        else{
            System.out.println(s);
        }
    }
}

03:单词替换

描述:输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。

输入:输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100).s, a, b 最前面和最后面都没有空格.

输出:输出只有 1 行,将s中所有单词a替换成b之后的字符串。

样例输入:You want someone to help you

You

I

样例输出:I want someone to help you

import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        String s=cin.nextLine();
        String a=cin.next();
        String b=cin.next();
        String[] ss=s.split(" ");
        for(String st:ss){
            if(st.equals(a)){
                System.out.print(b);
            }
            else{
                System.out.print(st);
            }
        }
    }
}

04:回文子串

描述:给定一个字符串,输出所有长度至少为2的回文子串。回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。

输入:一个字符串,由字母或数字组成。长度500以内。

输出:输出所有的回文子串,每个子串一行。子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出。

样例输入:


123321125775165561


样例输出:


33 11 77 55 2332 2112 5775 6556 123321 165561


import java.util.Scanner; 
public class Main { 
    static boolean huiwen(String s){
        for(int i=0;i<s.length()/2;i++){
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        String s=cin.next();
        for(int i=2;i<=s.length();i++){
            for(int j=0;j<=s.length()-i;j++){
                String t=s.substring(j,j+i);
                if(huiwen(t)){
                    System.out.println(t);
                }
            }
        }
    }
 
}

05:短信计费

描述:用手机发短信,一条短信资费为0.1元,但限定一条短信的内容在70个字以内(包括70个字)。如果你一次所发送的短信超过了70个字,则会按照每70个字一条短信的限制把它分割成多条短信发送。假设已经知道你当月所发送的短信的字数,试统计一下你当月短信的总资费。

输入:第一行是整数n,表示当月发送短信的总次数,接着n行每行一个整数,表示每次短信的字数。

输出:输出一行,当月短信总资费,单位为元,精确到小数点后1位。

样例输入:


10 39 49 42 61 44 147 42 72 35 46


样例输出:


1.3


import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        double sum=0;
        for(int i=0;i<n;i++){
            int t1=cin.nextInt();
            int t2=t1/70;
            int t3=t1%70;
            if(t3!=0){
                t2++;
            }
            sum+=0.1*t2;
        }
        System.out.printf("%.1f",sum);
    }
}

06:角谷猜想

描述:所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到1的过程输出来。

输入:一个正整数

输出:从输入整数到1的步骤,每一步为一行,每一部中描述计算过程,假定输入为7,则输出为:
7*3+1=22
22/2=11
11*3+1=34
34/2=17
17*3+1=52
52/2=26
26/2=13
13*3+1=40
40/2=20
20/2=10
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
最后一行输出"End",如果输入为1,直接输出"End"

样例输入:


5 样例输出: 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 End


import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        if(n==1){
            System.out.println("End");
            return;
        }
        else{
            while(true){
                if(n%2==0){
                    System.out.println(n+"/2="+(n/2));
                    n/=2;
                }
                else{
                    System.out.println(n+"*3+1="+(n*3+1));
                    n=n*3+1;
                }
                if(n==1){
                    System.out.println("End");
                    return;
                }
            }
        }
    }
}

07:字符串判等

描述:判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等。

输入:两行,每行包含一个字符串。

输出:若两个字符串相等,输出YES,否则输出NO。

样例输入:


a A bb BB ccc CCC Aa BBbb CCCccc


样例输出:


YES


import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        String s1= cin.nextLine();
        String s2= cin.nextLine();
        s1=s1.replaceAll(" ","");
        s2=s2.replaceAll(" ","");
        if(s1.equalsIgnoreCase(s2)){
            System.out.println("YES");
        }
        else{
            System.out.println("NO");
        }
    }
}

08:开关灯

描述:

假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。

请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。

输入:输入正整数N和M,以单个空格隔开。

输出:顺次输出关闭的灯的编号,其间用逗号间隔。

import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        int m= cin.nextInt();
        int[] a=new int[n+1];
        Arrays.fill(a,1);
        for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            if(j%i==0){
                a[j]=-a[j];
            }
         }
        }
        String s="";
        for(int i=1;i<=n;i++){
            if(a[i]==-1){
                s=s+i+",";
            }
        }
        System.out.println(s.substring(0,s.length()-1));
    }
}

09:找第一个只出现一次的字符

描述:给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。

输入:一个字符串,长度小于100000。

输出:输出第一个仅出现一次的字符,若没有则输出no。

样例输入:


abcabd


样例输出:


c


import java.util.Scanner;
public class Main {
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        String s=cin.next();
        int len=s.length();
        int[] a=new int[26];
        for(int i=0;i<len;i++){
            a[s.charAt(i)-'a']++;
        }
        for(int i=0;i<len;i++){
            if(a[s.charAt(i)-'a']==1){
                System.out.println(s.charAt(i));
                return;
            }
        }
        System.out.println("no");
    }
}

10:素数对

描述:两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。

输入:一个正整数n。1 <= n <= 10000。

输出:所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。

样例输入


100


样例输出


3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73


import java.util.Scanner;
public class Main {
    static boolean sushu(int n){
        for(int i=2;i*i<=n;i++){
            if(n%i==0){
                return false;
            }
        }
        return true;
    }
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        int flag=0;
        for(int i=3;i+2<=n;i++){
            if(sushu(i)&&sushu(i+2)){
                flag=1;
                System.out.println(i+" "+(i+2));
            }
        }
        if(flag==0){
            System.out.println("empty");
        }
    }
}