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;
}


 

猜你喜欢

转载自blog.csdn.net/qq_41410799/article/details/83957927
今日推荐