计蒜客---函数规律 (字符串)
下面我将描述一个简单的函数:
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 }