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幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手.老师 ...
随机推荐
- 整型和浮点型与QByteArray的转换
目录 QByteArray 整型 QByteArray 浮点型 QByteArray QByteArray The QByteArray class provides an array of byte ...
- 基于胜率矩阵的PageRank排序
在做博弈模型评估的时候,遇到一个问题是如何评价多个模型的优劣.例如我有训练好的三个围棋模型A,B,C,两两之间对打之后有一个胜负关系,如何对这三个模型进行排序呢?通常对于人类选手这种水平有波动的情 ...
- 【Hadoop离线基础总结】linux的shell编程
linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...
- [hdu]5202
思路:把所有'?'用'a'代替,如果冲突则最后一个改为'b',注意特判最后一个问号在中间的情况.
- LeetCode链表专题
链表 套路总结 1.多个指针 移动 2.虚假链表头:凡是有可能删除头节点的都创建一个虚拟头节点,代码可以少一些判断(需要用到首部前一个元素的时候就加虚拟头指针) 3.快慢指针 如leetcode160 ...
- Django模板之模板标签
标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中. 一些标签需要开始和结束标签 (例如:{% tag %} ...标签 内容 ... ...
- IIS网站发布不了.ttf .woff 文件 并且网站报脚本错误找不到
-----------------------------解决方法------------------------------------------------ 1. 既然脚本发布不了,就将脚本从本 ...
- Spring Boot 教程(1) - HelloWorld
Spring Boot 教程 - HelloWorld 1. Spring Boot 的由来 大家都知道,Spring框架是Java生态中举足轻重的轻量型框架,帮助我们广大的大佬们进行Java开发.S ...
- 小BUG大原理:重写WebMvcConfigurationSupport后SpringBoot自动配置失效
一.背景 公司的项目前段时间发版上线后,测试反馈用户的批量删除功能报错.正常情况下看起来应该是个小 BUG,可怪就怪在上个版本正常,且此次发版未涉及用户功能的改动.因为这个看似小 BUG 我了解到不少 ...
- Golang源码学习:调度逻辑(二)main goroutine的创建
接上一篇继续分析一下runtime.newproc方法. 函数签名 newproc函数的签名为 newproc(siz int32, fn *funcval) siz是传入的参数大小(不是个数):fn ...