zoukankan      html  css  js  c++  java
  • 牛客练习赛35-函数的魔法-floyd

    函数的魔法

    思路 :如果 可以从A到B最终 都会是233范围内的数字进行转换,注意 这里 建图 为单向图  这个运算未必符合交换关系。

    #include<bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    #define mod 233
    #define maxn 300
    int mp[maxn][maxn];
    int n,t,a,b,ans,cpa;
    int f(int x){ x%=mod; return (x*x*x+x*x)%mod;}
    int g(int x){ x%=mod; return (x*x*x-x*x)%mod;}
    void init()
    {
        memset(mp,inf,sizeof(mp));
        for(int i=0; i<mod; i++)
        {
            mp[i][f(i)]=1;
            mp[i][g(i)]=1;
            mp[i][i]=0;
        }
        for(int k=0; k<mod; k++)
            for(int i=0; i<mod; i++)
                for(int j=0; j<mod; j++)
                    if(mp[i][k]!=inf&&mp[k][j]!=inf)
                        mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);
    }
    int main()
    {
        scanf("%d",&t);
        init();
        while(t--)
        {
            scanf("%d%d",&a,&b);
            if(a==b)printf("0
    ");
            else if(b>=mod)printf("-1
    ");
            else
            {
                cpa=289;
                ans=0;
                if(a>=mod)
                {
                    cpa=f(a);
                    a=g(a);
                    ans++;
                }
                if(mp[a][b]<inf||mp[cpa][b]<inf)
                {
                    ans+=min(mp[a][b],mp[cpa][b]);
                    printf("%d
    ",ans);
                }
                else printf("-1
    ");
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    springboot(6)-热部署
    springboot(5)-文件上传
    ubuntu修改tomcat使用的jdk
    jstack使用
    HeapAnalyzer如何使用
    查看linux下tomcat使用的jdk版本
    ubuntu-tomcat安装目录
    vi命令
    211java-jdk安装记录
    linux的java安装目录
  • 原文地址:https://www.cnblogs.com/SDUTNING/p/10261629.html
Copyright © 2011-2022 走看看