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