挑战难题(一)

下面我将描述一个简单的函数:
f(8)=2
f(16)=1
f(32)=0
f(2048)=3
读入一个x(1≤x≤101000),请你找出f(x)的值。
输入包括一行,仅一个数字x。
输出包括一行,仅一个数字f(x)。
提示:
f(0)=1, f(1)=0, f(2)=0, f(3)=0, f(4)=0, f(5)=0, f(6)=1, f(7)=0, f(8)=2, f(9)=1
有时候看数据猜题意也是很重要的技能,如果你看到这里还不知道题意的话,那么我来告诉你,f(x)表示x的十进制表示中有多少个圈圈。

样例1
输入:
2048
输出:
3
import java.math.BigDecimal;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
String s = sc.nextLine();

BigDecimal cnt = BigDecimal.ZERO;
for (int i = 0; i < s.length(); i++) {
int g = Integer.parseInt(String.valueOf(s.charAt(i)));
cnt =cnt.add(new BigDecimal(map(g)));
}

System.out.print(cnt);
}

private static int map(int c) {
int ret;
switch (c) {
case 0:
ret = 1;
break;
case 1:
ret = 0;
break;
case 2:
ret = 0;
break;
case 3:
ret = 0;
break;
case 4:
ret = 0;
break;
case 5:
ret = 0;
break;
case 6:
ret = 1;
break;
case 7:
ret = 0;
break;
case 8:
ret = 2;
break;
case 9:
ret = 1;
break;
default:
ret = 0;
break;
}
return ret;
}
}


--来自网页客户端
已邀请:

要回复问题请先登录注册

Template error, template file not found