我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。
如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。
现在我们有一个正整数 N, 计算从 1 到 N 中有多少个数 X 是好数?
AC代码1:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
if(N <= 1) {
System.out.println(0);
return ;
}
int sum = 0;
for(int i = 2; i <= N;i++) {
int number = i;
boolean flag = false;
while(number != 0) {
int a = number % 10;
if(a == 3 || a == 4 || a == 7) {
break;
}else if(a == 0 || a == 1 || a == 8){
}else {
flag = true;
}
number /= 10;
}
if(number == 0 && flag) {
sum++;
}
}
System.out.println(sum);
}
}
AC代码2:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String string = "";
int N = sc.nextInt();
if(N <= 1) {
System.out.println(0);
return ;
}
int sum = 0;
for(int i = 2; i <= N;i++) {
sum += ss(i);
}
System.out.println(sum);
}
public static int ss(int i) {
String string = String.valueOf(i);
if(string.contains("3") || string.contains("4") || string.contains("7"))
return 0;
if(string.contains("2") || string.contains("5") || string.contains("6") || string.contains("9"))
return 1;
return 0;
}
}