Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
试题 算法训练 Rotatable Number
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
Bike是个十分喜欢数学的聪明孩子。他发明了“可旋转数”,其灵感来自于142857。
正如你所见,142857是一个十分神奇的数,因为所有从它通过旋转得到的数都是它自己乘以1,2,3…,6(从1到数的长度)。旋转一个数就是将它的最后一位数字放到最前面。比如说,通过旋转12345你能够得到这些数:12345,51234,45123,34512,23451。值得一提的是这里允许有前导0。因而4500123和0123450都能够通过旋转0012345得到。你可以看看142857满足条件的原因了。下面的6个方程都在十进制下成立:
142857 * 1 = 142857;
142857 * 2 = 285714;
142857 * 3 = 428571;
142857 * 4 = 571428;
142857 * 5 = 714285;
142857 * 6 = 857142
现在,Bike提出了一个问题。他将“可旋转数”推广到了任意进制b。如上所示,142857是十进制下的一个“可旋转数”。另外一个例子是二进制下的0011。下面的4个方程都在二进制下成立:
0011 * 1 = 0011;
0011 * 10 = 0110;
0011 * 11 = 1001;
0011 * 100 = 1100
他想要找到最大的b(1 < b < x),满足在b进制下存在一个长度为n的正“可旋转数”(允许有前导零)。
输入格式
仅一行包含两个用空格分隔的整数n,x。
输出格式
一行一个整数,表示你找到的最大的b。如果不存在满足条件的b,输出-1。
样例输入I
6 11
样例输出I
10
样例输入II
5 8
样例输出II
-1
数据规模和约定
对于20%的数据,n <= 10, x <= 15
对于50%的数据,x <= 10
对于100%的数据,1 <= n <= 5 * 10^6,2 <= x <= 10^9
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 转自: https://blog.csdn.net/a1439775520
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int x = sc.nextInt();
sc.close();
if (n==1&&x==3) {
System.out.println(2);
return;
}
if (!isPrime(n + 1)) {
System.out.println(-1);
return;
}
for (int i = x - 1; i >1; i--) {
if (isRoot(i, n + 1)) {
System.out.println(i);
return;
}
}
System.out.println(-1);
}
private static boolean isRoot(long a, long p) {
if (a%p==0) {
return false;
}
for (int i = 1; i * i <= p - 1; i++) {
if ((p - 1) % i == 0) {
if (i < p - 1 && ex(a, i, p) == 1) {
return false;
}
if ((p - 1) / i < p - 1 && ex(a, (p - 1) / i, p) == 1) {
return false;
}
}
}
return true;
}
private static long ex(long a, long n, long p) {
if (n == 0) {
return 1 % p;
}
long res = 1;
while (n != 0) {
if ((n & 1) == 1) {
res = res * a % p;
}
n >>= 1;
a = a * a % p;
}
return res;
}
private static boolean isPrime(long n) {
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)的更多相关文章
- Java实现 蓝桥杯 算法训练 画图(暴力)
试题 算法训练 画图 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间的区域涂上颜色. 下图给出了一个画了两个矩 ...
- Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
试题 算法训练 Number Challenge 资源限制 时间限制:3.0s 内存限制:512.0MB 问题描述 定义d(n)为n的约数个数.现在,你有三个数a,b,c.你的任务是计算下面式子mod ...
- Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
试题 算法训练 猴子吃包子 问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉 ...
- Java实现蓝桥杯 算法训练 大等于n的最小完全平方数
试题 算法训练 大等于n的最小完全平方数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输出大等于n的最小的完全平方数. 若一个数能表示成某个自然数的平方的形式,则称这个数为完全平 ...
- Java实现 蓝桥杯 算法训练 Airport Configuration
试题 算法训练 Airport Configuration 问题描述 ACM机场是一个本地机场,对于大多数人来说,机场不是他们的终点或起点,而是中转站.机场有一个规划图.到达的大门在机场的北边(相当于 ...
- java实现 蓝桥杯 算法训练 Password Suspects
问题描述 在年轻的时候,我们故事中的英雄--国王 Copa--他的私人数据并不是完全安全地隐蔽.对他来说是,这不可接受的.因此,他发明了一种密码,好记又难以破解.后来,他才知道这种密码是一个长度为奇数 ...
- Java实现 蓝桥杯 算法训练VIP 报数(暴力+数学)约瑟夫环问题
试题 算法训练 报数 问题描述 现有n个同学站成一圈,顺时针编号1至n.从1号同学开始顺时针1/2报数,报到1的同学留在原地,报到2的同学退出圆圈,直到只剩一名同学为止.问最后剩下的同学编号. 输入格 ...
- Java实现蓝桥杯 算法训练 ALGO-15 旅行家的预算
问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...
- Java实现 蓝桥杯 算法训练 审美课
算法训练 审美课 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 <审美的历程>课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手.老师 ...
随机推荐
- for do-while while区别
分别用for do-while while求1-100的和
- 【Hadoop离线基础总结】HDFS入门介绍
HDFS入门介绍 概述 HDFS全称为Hadoop Distribute File System,也就是Hadoop分布式文件系统,是Hadoop的核心组件之一. 分布式文件系统是横跨在多台计算机上的 ...
- Gitlab升级记
一: 验证gitlab备份是否可用 这里所使用的操作系统环境全部都基于Cetnos7, 防火墙以及selinux全部关闭. 1. 另外找一台机器,安装与服务器版本相同的gitlab,根据原服务器数据的 ...
- Spring方法注入的使用与实现原理
一.前言 这几天为了更详细地了解Spring,我开始阅读Spring的官方文档.说实话,之前很少阅读官方文档,就算是读,也是读别人翻译好的.但是最近由于准备春招,需要了解很多知识点的细节,网上几乎 ...
- Jenkins 实现 ldap认证
使用自己搭建的openldap: 使用Test LdapSetting测试的结果: 所测试的用户在:svn,jenkins,gitlab,sonarqube,wpsadmin组下 若用户不在jenki ...
- C# winform DataGridView 绑定数据的的几种方法
1.用DataSet和DataTable为DataGridView提供数据源 String strConn = "Data Source=.;Initial Catalog=His;User ...
- kube-controller-manager反复重启解决
背景 某环境,kube-controller-manager反复重启,尝试重建kube-controller-manager的pod,但是过一会问题复现. 如上图,kube-controller- ...
- django 中CBV和FBV 路由写法的区别
使用视图函数时, FBV: django完成URL解析之后,会直接把request对象以及URL解析器捕获的参数(比如re_path中正则表达捕获的位置参数或关键字参数)丢给视图函数 CBV: 这些参 ...
- H3C S5500三层交换机划分Vlan与H3C路由组网
基本属性: vlan特性:三层互通,两层隔离.三层交换机不同vlan之间默认是互通的,两次交换机不同vlan是隔离的. vlan IP:就是定义一个vlan下所有机器的网关地址,该vlan下的机器网关 ...
- 日志文件的配置----【logback-spring.xml】
一.引入相关包 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-c ...