1. 程式人生 > >2018ACM青島 M題

2018ACM青島 M題

題目連結ZOJ-4070

## **題目描述**:

在這裡插入圖片描述

思路

這顯然是一道簽到題, 我們可以深搜+減枝就可以過了這道題;

我們容易發現, 最終的結果一定會跳回 0 或者 1 ,然後我們判斷一下奇偶就可以進行大量的節省時間,不會造成爆棧;

AC程式碼

#include <bits/stdc++.h>
using namespace std;

int val[10] = {1, 0, 0, 0, 1, 0, 1, 0, 2, 1};

int fun(int n, int k)
{
    if(k == 0)
        return n;
    if(
n == 0)//差不多是個剪枝吧 { if(k & 1) { return 1; } else { return 0; } } int sum = 0; while(n) { sum += val[n % 10]; n /= 10; } return fun(sum, k-1); } int main() { int t; scanf("%d", &
t); while(t--) { int n, k; scanf("%d %d", &n, &k); printf("%d\n", fun(n, k)); } return 0; }