【CF#303D】Rotatable Number
【题目描述】
Bike是一位机智的少年,非常喜欢数学。他受到142857的启发,发明了一种叫做“循环数”的数。
如你所见,142857是一个神奇的数字,因为它的所有循环排列能由它乘以1,2,...,6(1到它的长度)得到。循环排列意味着将该数的一些数位从尾部挪到前面。例如,12345的循环排列包括:12345,51234,45123,34512,23451.值得一提的是,允许出现前导零。因此4500123和0123450都是0012345的循环排列。你可以看到142857满足条件的原因。以下六个等式是在十进制下的。
·142857*1=142857
·142857*2=285714
·142857*3=428571
·142857*4=571428
·142857*5=714285
·142857*6=857142
现在Bike有一个问题。他将“循环数”扩展到任意进制b。如前所述,142857是十进制下的循环数。另一个例子是二进制下的0011.以下四个等式是二进制的:
·0011*1=0011
·0011*10=0110
·0011*11=1001
·0011*100=1100
他想要找出最大的b(1<b<x)使得有一个b进制下长度为n的正循环数(允许前导零)。
注意,当你将循环数乘以1到其长度的任意整数时你都应该得到一个它的循环排列。
【题解】
传送门:http://blog.csdn.net/wmdcstdio/article/details/45042353?locationNum=7
%%%%%%%%%%%%王梦迪大神
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
#define MAXN 5000010
#define FILE "read"
typedef long long ll;
ll n,x,cnt,len,pr[MAXN],prime[MAXN],isprime[MAXN];
ll gcd(ll a,ll b) {return !b?a:gcd(b,a%b);}
ll fast(ll a,ll b,ll mod) {ll sum=;for(;b;b>>=,a=a*a%mod)if(b&)sum=sum*a%mod;return sum;}
inline ll read()
{
ll x=,f=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
void get()
{
for(ll i=;i<=MAXN-;i++)
{
if(!isprime[i]) prime[++cnt]=i;
for(ll j=;j<=cnt&&prime[j]*i<=MAXN-;j++)
{
isprime[prime[j]*i]=;
if(i%prime[j]==) break;
}
}
}
void pre(ll p)
{
ll temp=p-;
for(ll i=;i<=cnt;i++)
{
if(temp%prime[i]==) pr[++len]=prime[i];
while(temp%prime[i]==) temp/=prime[i];
}
if(temp>) pr[++len]=temp;
}
bool check(ll d,ll p)
{
if(gcd(p,d)!=) return ;
for(ll i=;i<=len;i++) if(fast(d,(p-)/(pr[i]),p)==) return ;
return ;
}
int main()
{
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
n=read(); x=read();
get();
if(isprime[n+]) {printf("-1\n"); return ;}
pre(n+);
for(ll i=x-;i>;i--) if(check(i,n+)) {printf("%I64d\n",i); return ;}
printf("-1\n");
return ;
}
【CF#303D】Rotatable Number的更多相关文章
- 【Leet Code】Palindrome Number
Palindrome Number Total Accepted: 19369 Total Submissions: 66673My Submissions Determine whether an ...
- 【CF#338D】GCD Table
[题目描述] 有一张N,M<=10^12的表格,i行j列的元素是gcd(i,j) 读入一个长度不超过10^4,元素不超过10^12的序列a[1..k],问是否在某一行中出现过 [题解] 要保证g ...
- 【codeforces 805D】Minimum number of steps
[题目链接]:http://codeforces.com/contest/805/problem/D [题意] 给你一个字符串; 里面只包括a和b; 让你把里面的"ab"子串全都去 ...
- 【HDU 3709】 Balanced Number (数位DP)
Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced ...
- 【CF 453A】 A. Little Pony and Expected Maximum(期望、快速幂)
A. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...
- 【CF 585E】 E. Present for Vitalik the Philatelist
E. Present for Vitalik the Philatelist time limit per test 5 seconds memory limit per test 256 megab ...
- 【35.20%】【CF 706D】Vasiliy's Multiset
time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standa ...
- 【26.8%】【CF 46D】Parking Lot
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 【CF 463F】Escape Through Leaf
题意 给你一棵 \(n\) 个点的树,每个节点有两个权值 \(a_i,b_i\). 从一个点 \(u\) 可以跳到以其为根的子树内的任意一点 \(v\)(不能跳到 \(u\) 自己),代价是 \(a_ ...
随机推荐
- Javascript实现简单的选项卡
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u011043843/article/details/30723933 在线演示:http://jsf ...
- 页面加载完之后在执行js代码
把代码写在 window.onload = function () { //js代码 //此处js代码是页面完全加载完之后执行 } 即可. 例: <script type="text/ ...
- Openfire源码使用Install4j打包
https://www.ej-technologies.com/download/install4j/files 下载并安装install4jhttps://www.ej-technologies.c ...
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)
WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"Weife ...
- 基于标准库的string类实现简单的字符串替换
感觉基本功还是不扎实,虽然能做些程序但是现在看来我还是个初学者(primer),试着完成习题结果还得修修改改. 废话不多说,实现功能很简单,<C++ Primer>9.5.2节习题. // ...
- struts2学习(12)struts2验证框架2.自定义验证
一.例子需求: 对敏感词进行验证: 将struts包中的validators.xml文件拷贝一份到src目录下,在最后面添加自己的验证器: com.cy.validators.SensitiveWor ...
- 操作系统-服务器-百科:Windows Server
ylbtech-操作系统-服务器-百科:Windows Server Windows Server是微软在2003年4月24日推出的Windows 的服务器操作系统,其核心是Microsoft Win ...
- Codeforces-708C(树形DP)
一.题意 给定一颗树,对于每一个节点,判断能否在树中删除某一条边,然后在任意两个节点之间加一条边,使这个点成为重心. 注:删除树中某一条边后,标程并不会这么无聊地把这棵树变成两个孤立的连通图,而是再让 ...
- 【做题记录】USACO silver * 50(第一篇)
由于我太菜,决定按照AC人数从小到大慢慢做. BZOJ开了权限号真的快了好多诶~ 29/50 1606: [Usaco2008 Dec]Hay For Sale 购买干草 背包dp 1610: [Us ...
- Windows 10 提权漏洞复现及武器化利用
项目地址:https://github.com/SandboxEscaper/randomrepo 相关工具的下载地址: Process Explorer:https://docs.microsoft ...