目录
- 网购
- 判断字母
- 进制A+B
- KiKi和酸奶
- 2的n次方计算
1.题目描述
KiKi非常喜欢网购,在一家店铺他看中了一件衣服,他了解到,如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用),求KiKi最终所花的钱数。
1.1输入描述
一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1表示,无优惠券用0表示)。
1.2输出描述
一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)
1.3示例1
输入
1000.0 11 11 1
输出
650.00
1.4示例2
输入
999.8 12 12 0
输出
799.84
1.5示例3
输入
66.6 11 11 1
输出
0.00
1.6代码实现
import java.util.Scanner;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
Scanner input = new Scanner(System.in);
double price = input.nextDouble(); //价格
int month = input.nextInt(); //月份
int date = input.nextInt(); //日期
int dis = input.nextInt(); //是否有优惠券
if(month==11 && date==11){ //双十一折扣
price = 0.7*price;
if(price>=50 && dis==1){
price = price-50;
}else if(price<50 && dis==1){
price = 0;
}
}else if(month==12 && date==12){ //双十二折扣
price = 0.8*price;
if(price>=50 && dis==1){
price = price-50;
}else if(price<50 && dis==1){
price = 0;
}
}
System.out.print(String.format("%.2f",price));
}
}
2.题目描述
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。
2.1输入描述
多组输入,每行输入包括一个字符。
2.2输出描述
针对每行输入,输出该字符是字母(YES)或不是(NO)。
2.3示例1
输入
H
9
输出
YES
NO
2.4代码实现
import java.util.Scanner;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
Scanner input = new Scanner(System.in);
while(input.hasNext()){
char in = input.next().charAt(0);
if(Character.isUpperCase(in)||Character.isLowerCase(in)){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
}
3.题目描述
输入一个十六进制数a,和一个八进制数b,输出a+b的十进制结果(范围-231~231-1)。
3.1输入描述
一行,一个十六进制数a,和一个八进制数b,中间间隔一个空格。
3.2输出描述
一行,a+b的十进制结果。
3.3示例1
输入
0x12 05
输出
23
3.4备注
十六进制Hexadecimal一般以0x开头,例如0xFF。八进制Octal,一般以0开头,例如07。
3.5代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String[] strs = input.readLine().split(" ");
int a = Integer.parseInt(strs[0].substring(2),16);//index默认十进制,这里需要改为十六进制
int b = Integer.parseInt(strs[1].substring(1),8);
int sum = a+b;
System.out.println(sum);
}
}
4.题目描述
BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?
4.1输入描述
多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。
4.2输出描述
针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。
4.3示例1
输入
8 5 16
输出
4
4.4代码实现
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String strs = input.readLine();
while(strs != null){
String[] in = strs.split(" ");
int n = Integer.parseInt(in[0]);
int h = Integer.parseInt(in[1]);
int m = Integer.parseInt(in[2]);
int counts = 0;
if(m%h==0){
counts = n-m/h;
}else{
counts = n-m/h-1;
}
System.out.println(counts);
strs = input.readLine();
}
}
}
5.题目描述
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
5.1输入描述
多组输入,每一行输入整数n(0 <= n < 31)。
5.2输出描述
针对每组输入输出对应的2的n次方的结果。
5.3示例1
输入
2
10
输出
4
1024
5.4代码实现
import java.util.Scanner;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
Scanner input = new Scanner(System.in);
while(input.hasNext()){
int n = input.nextInt();
System.out.println(2<<(n-1));
}
}
}