链接

[https://ac.nowcoder.com/acm/contest/32]

题意

题目描述

一位客人来到了此花亭,给了女服务员柚一个数学问题:我们有两个函数,F(X)函数可以让X变成(XXX+XX)mod 233。G(X)函数可以让X变成(XXX-XX)mod 233,我们可以任意的对A使用F(X),和G(X),问最少需要多少次使用这两个函数让A变成B。

输入描述:

第一行输入一个T,表示T组案例(T<100000),然后输入两个整数A,B,表示我们需要把A变成B。(0<=A<=2000000000,0<=B<=2000000000)

输出描述:

输出一个整数表示从A到B最少需要多少次操作,如果不能请输出-1.

示例1

输入

复制

1

2 186

输出

复制

2

说明

我们首先使用F(X),将2变成(222+22)mod 233=12。然后我们再将12通过G(X),变成(121212-1212)mod 233=186

分析

floyd的应用,看代码就知道了

代码

#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
const int mod=233;
int dp[310][310];
int t,a,b,cnt,n;
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(dp,inf,sizeof(dp));
for(int i=0; i<mod; i++)
{
dp[i][f(i)]=1;
dp[i][g(i)]=1;
dp[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(dp[i][k]!=inf&&dp[k][j]!=inf)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
}
int main(){ scanf("%d",&t);
init();
// for(int i=0; i<mod; i++){
// for(int j=0; j<mod; j++)
// cout<<dp[i][j]<<' ';
// cout<<endl;
// }
//
while(t--){
scanf("%d%d",&a,&b);
if(a==b) printf("0\n");
else if(b>=mod) printf("-1\n");
else{
if(a>=mod){
// cout<<1<<endl;
cnt=1;
n=f(a);
a=g(a);
if(dp[a][b]<inf||dp[n][b]<inf){
cnt+=min(dp[a][b],dp[n][b]);
printf("%d\n",cnt);
}
else printf("-1\n");
}
else{
//cout<<2<<endl;
if(dp[a][b]!=inf) printf("%d\n",dp[a][b]);
else printf("-1\n");
}
}
}
return 0;
}

牛客练习赛35 C.函数的魔法的更多相关文章

  1. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  2. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  3. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  4. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  5. 牛客练习赛28-B(线段树,区间更新)

    牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 ...

  6. 牛客练习赛26:D-xor序列(线性基)

    链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...

  7. [堆+贪心]牛客练习赛40-B

    传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费  x_i 的时间,同时完成第 i 个任务的时间不 ...

  8. 牛客练习赛 29 E 位运算?位运算!(线段树)

    题目链接  牛客练习赛29E 对$20$位分别建立线段树.首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下.转移的时候加个中间变量. $3$和$4$其实就是区间$01$覆盖操 ...

  9. 牛客练习赛22C Bitset

    牛客练习赛22C 一共有 n个数,第 i 个数是 xi  xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iost ...

随机推荐

  1. C#面向对象 类

    ; i < ; i++) { student.b++;//静态字段若不赋值,默认为1: new student().a++;//引用类型变量定义后,必须使用new关键字创建对象 才能后才能使用 ...

  2. 转: OVER() 系列函数介绍

    OVER(PARTITION BY)函数介绍 开窗函数               Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...

  3. spring的基于XML方式的属性注入

    1.掌握spring的属性注入的方法: 1.1构造方法注入普通值---------<constructor-arg>标签的使用 首先新建一个类 package spring.day1.de ...

  4. nodejs前后分离

    proxy: { '/api': { target: 'http://localhost:3000/', pathRewrite: {'^/api' : ''}, changeOrigin: true ...

  5. Linux /var/log下的各种日志文件详解

    1)/var/log/secure:记录登录系统存取数据的文件;例如:pop3,ssh,telnet,ftp等都会记录在此. 2)/var/log/wtmp:记录登录这的信息记录,被编码过,所以必须以 ...

  6. sqlSugar的使用---入门

    一,新建.net core  web项目 二.  项目引入包:sqlSugarCore 三.创建两个表:user,   department 四. 新建model(不一定需要与table相同,使用[S ...

  7. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  8. Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused

    Get https://192.168.2.119/v2/: dial tcp 192.168.2.119:443: getsockopt: connection refused

  9. php 验证身份证号

    function validation_filter_id_card($id_card){ if(strlen($id_card)==18){ return idcard_checksum18($id ...

  10. 微信硬件平台(七) 设备控制控制面板-网页sokect-mqtt长连接

    给微信硬件设备添加我们自己的控制面板. 主要问题: 1 要保证长连接,这样面板可以实时交互阴间设备,http一次性的连接模式通信不行. 面板必须是网页化的,网页就可以操作交互.不用APP和小程序. 2 ...