计蒜客---函数规律 (字符串)

下面我将描述一个简单的函数:

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的十进制表示中有多少个圈圈。

 

样例输入

2048

样例输出

3

题解:字符串处理
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <vector>
 6 #include <cstdlib>
 7 #include <iomanip>
 8 #include <cmath>
 9 #include <ctime>
10 #include <map>
11 #include <set>
12 #include <queue>
13 using namespace std;
14 #define lowbit(x) (x&(-x))
15 #define max(x,y) (x>y?x:y)
16 #define min(x,y) (x<y?x:y)
17 #define MAX 100000000000000000
18 #define MOD 1000000007
19 #define pi acos(-1.0)
20 #define ei exp(1)
21 #define PI 3.141592653589793238462
22 #define INF 0x3f3f3f3f3f
23 #define mem(a) (memset(a,0,sizeof(a)))
24 typedef long long ll;
25 ll gcd(ll a,ll b){
26     return b?gcd(b,a%b):a;
27 }
28 bool cmp(int x,int y)
29 {
30     return x>y;
31 }
32 const int N=1005;
33 const int mod=1e9+7;
34 char a[N];
35 int main()
36 {
37     scanf("%s",a);
38     int len=strlen(a);
39     int s=0,t;
40     for(int i=0;i<len;i++){
41         t=(int )a[i]-'0';
42         if(t==8) s+=2;
43         else if(t==0||t==6||t==9) s++;
44     }
45     cout<<s<<endl;
46     return 0;
47 }
posted @ 2017-08-03 11:07  wydxry  阅读(389)  评论(0编辑  收藏  举报
Live2D