1. 程式人生 > >The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror) M Function and Function

The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror) M Function and Function

此題是一道簽到題目,說是簽到題目但是自己卻做了好久啊。。。如果暴力算的話,會超時。

仔細分析一下會發現f(0)跟f(1)是能夠相互轉化的。所以當算到0和1的時候只需要根據奇偶次運算就能夠判斷結果了。

程式碼如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int n;
int a[15]={1,0,0,0,1,0,1,0,2,1};
int x,k;

int main()
{
    while (scanf("%d",&n)!=EOF)
    {
        while (n--)
        {
            scanf("%d%d",&x,&k);
                int ans=x;
                for (int i=0;i<k;i++)
                {
                    int t=x,tans=0;
                    if(t==0)
                    {
                        tans=1;
                    }
                    else
                    {
                        while (t)
                     {
                        tans+=a[t%10];
                        t/=10;
                     }
                    }
                    if(tans==1||tans==0)
                    {
                        if((k-i-1)%2)
                        {
                            tans=(tans+1)%2;
                        }
                        ans=tans;
                        break;
                    }
                    x=tans;
                    ans=tans;
                }
                printf("%d\n",ans);
        }
    }
    return 0;
}