题目描述
一些数字可能拥有以下的性质:
性质 1:是偶数;
性质 2:大于 4 且不大于 12。
小A 喜欢这两个性质同时成立的数字;Uim 喜欢这至少符合其中一种性质的数字;八尾勇喜欢刚好有符合其中一个性质的数字;正妹喜欢不符合这两个性质的数字。
输入格式
输入一个数字 x(0≤x≤1000)
输出格式
输出这 4 个人是否喜欢这个数字,如果喜欢则输出1,否则输出0,用空格分隔。
输入输出样例
输入
12
输出
1 1 0 0
题解:
1.使用位运算判断奇偶,运行时间是要快于普通的数学符号判断(>,<等),位运算,判断n的奇偶性,如果n&1==0为偶数,n&1!=0为奇数或者三目运算符,System.out.println((n&1)==0 ? “偶数” : “奇数” );
import java.util.Scanner;
public class P5710深基3例2数的性质 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
if ((n&1)==0&&(n>4&&n<=12)) System.out.print(1+" "); //同时满足
else System.out.print(0+" ");
if ((n&1)==0||(n>4&&n<=12)||(((n&1)==0)&&(n>4&&n<=12))) System.out.print(1+" "); //满足其一或者两个都满足
else System.out.print(0+" ");
if (((n&1)==0&&(n<=4||n>12))||((n&1)!=0&&(n>4&&n<=12))) System.out.print(1+" "); //只满足其一
else System.out.print(0+" ");
if ((n&1)!=0&&(n<=4||n>12)) System.out.print(1); //两个都不满足(一定要注意第二个判断要使用或运算,不然数据2会出错)
else System.out.print(0);
}
}
- 使用三目运算符,注意括号的范围,较为复杂但速度快,代码量小,注意加空格的括号,要将前面的三目运算符括在一起,不然会把特判的0和空格算作一个特判。
import java.util.Scanner;
public class P5710深基3例2数的性质 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
System.out.print((((n&1)==0&&(n>4&&n<=12))?1:0)+" "); //同时满足
System.out.print((((n&1)==0||(n>4&&n<=12)||(((n&1)==0)&&(n>4&&n<=12)))?1:0)+" "); //满足其一或者两个都满足
System.out.print(((((n&1)==0&&(n<=4||n>12))||((n&1)!=0&&(n>4&&n<=12)))?1:0)+" "); //只满足其一
System.out.print(((n&1)!=0&&(n<=4||n>12))?1:0); //两个都不满足(一定要注意第二个判断要使用或运算,不然数据2会出错)
}
}