牛客练习赛35 C.函数的魔法
链接
[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.函数的魔法的更多相关文章
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
- 牛客练习赛 29 E 位运算?位运算!(线段树)
题目链接 牛客练习赛29E 对$20$位分别建立线段树.首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下.转移的时候加个中间变量. $3$和$4$其实就是区间$01$覆盖操 ...
- 牛客练习赛22C Bitset
牛客练习赛22C 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 感觉二进制真是一个神奇的东西. #include <iost ...
随机推荐
- SQL 删除外键列
一 SQL删除列的语句是: alter table tableName drop column columnName --(其中,tableName为表名,columnName为列名) 但是,如果某列 ...
- c/c++ 模板与STL小例子系列<二> 模板类与友元函数
c/c++ 模板与STL小例子系列 模板类与友元函数 比如某个类是个模板类D,有个需求是需要重载D的operator<<函数,这时就需要用到友元. 实现这样的友元需要3个必要步骤 1,在模 ...
- 排序算法之冒泡排序的思想以及Java实现
1 基本思想 设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称 ...
- LeetCode算法题-Intersection of Two Linked Lists(Java实现)
这是悦乐书的第178次更新,第180篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第37题(顺位题号是160).编写程序以找到两个单链表交叉的节点.例如: 以下两个链表: ...
- JSP(一):初识JSP
在Servlet中,我们多次用到了jsp页面,今天就来仔细聊聊JSP. 一.概念 JSP全名是Java Server Pages,可理解为Java服务端页面,是一种动态网页开发技术,其本质是一个简化的 ...
- python3编写网络爬虫19-app爬取
一.app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供Web页面端的服务,而是直接开发了App,更多信息都是通过App展示的 App爬取相比Web端更加容易 ...
- C# 基础知识之 Unix 时间戳转换
unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒. /// 时间戳转为C#格式时间 private DateTime GetTime(string timeSt ...
- socket 如何判断远端服务器的连接状态?连接断开,需重连
fluent-logger-java is a Java library, to record events via Fluentd, from Java application. https://g ...
- swift Class的内存布局
class Human { //8 type or isa //retainCount var age: Int?//16 var name: String?//16 var nicknames: [ ...
- 安装 Kivy
Kivy 是基于Python编程语言的一种用于开发跨平台GUI客户端程序的框架.可以打包成iOS.Android.Windows.OSX等多种平台.目前已经实现一次编码,到处运行的目的. Kivy框架 ...