java-JD9 幸运数
import java.util.Scanner;
/**
* JD9 幸运数
* @author d3y1
*/
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
solution1(in);
solution2(in);
solution3(in);
}
}
/**
* 模拟法: 字符串转字符
* @param in
*/
private static void solution1(Scanner in){
int n = in.nextInt();
int result = 0;
for(int i=1; i<=n; i++){
if(f(i) == g(i)){
result++;
}
}
System.out.println(result);
}
/**
* 模拟法: 数***算
* @param in
*/
private static void solution2(Scanner in){
int n = in.nextInt();
int result = 0;
for(int i=1; i<=n; i++){
if(F(i) == G(i)){
result++;
}
}
System.out.println(result);
}
/**
* 模拟法: 数***算(位运算)
* @param in
*/
private static void solution3(Scanner in){
int n = in.nextInt();
int result = 0;
for(int i=1; i<=n; i++){
if(F(i) == G_(i)){
result++;
}
}
System.out.println(result);
}
/**
* 十进制数字之和: 字符串转字符
* @param x
* @return
*/
private static int f(int x){
int sum = 0;
char[] digits = String.valueOf(x).toCharArray();
for(char digit: digits){
sum += digit-'0';
}
return sum;
}
/**
* 十进制数字之和: 数***算
* @param x
* @return
*/
private static int F(int x){
int sum = 0;
while(x > 0){
sum += x%10;
x /= 10;
}
return sum;
}
/**
* 二进制数字之和: 字符串转字符
* @param x
* @return
*/
private static int g(int x){
int sum = 0;
char[] digits = Integer.toBinaryString(x).toCharArray();
for(char digit: digits){
sum += digit-'0';
}
return sum;
}
/**
* 二进制数字之和: 数***算
* @param x
* @return
*/
private static int G(int x){
int sum = 0;
while(x > 0){
sum += x%2;
x /= 2;
}
return sum;
}
/**
* 二进制数字之和: 数***算(位运算)
* @param x
* @return
*/
private static int G_(int x){
int sum = 0;
while(x > 0){
sum += x&1;
x >>= 1;
}
return sum;
}
}