【ZOJ4070】Function and Function(签到)

题意:求 k 层嵌套的 f(x)

0<=x,k<=1e9

思路:迭代不会很多次后函数里就会=0或者1,再看层数奇偶直接返回答案

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<string>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<vector>
11 using namespace std;
12 typedef long long ll;
13 typedef unsigned int uint;
14 typedef unsigned long long ull;
15 typedef pair<int,int> PII;
16 typedef vector<int> VI;
17 #define fi first
18 #define se second 
19 #define MP make_pair
20 #define N      110000
21 #define M      51
22 #define MOD 1000000007
23 #define eps 1e-8 
24 #define pi     acos(-1)
25 #define oo     1010000000
26 
27 int a[10]={1,0,0,0,1,0,1,0,2,1};
28 
29 int f(int n)
30 {
31     int s=0;
32     do{
33         s+=a[n%10];
34         n/=10;
35     }while(n);
36     return s;
37 }
38 
39 int g(int n,int k)
40 {
41     while(k--)
42     {
43         n=f(n);
44         if(n==0) return k%2;
45         if(n==1) return 1-k%2;
46     }
47     return n;
48 }
49 
50 int main()
51 { 
52      int cas;
53      scanf("%d",&cas);
54      for(int v=1;v<=cas;v++) 
55      {
56         int n,k;
57         scanf("%d%d",&n,&k);
58         printf("%d
",g(n,k));
59     }
60     return 0;
61 }
62     
原文地址:https://www.cnblogs.com/myx12345/p/10046261.html