/*
* 求1/i的循环节长度的最大值,i<=n
*/ const int MAXN = ; int res[MAXN]; // 循环节长度 int main()
{
memset(res, , sizeof(res)); int i, temp, j, n; for (temp = ; temp <= ; temp++)
{
i = temp;
while (i % == )
{
i /= ;
}
while (i % == )
{
i /= ;
}
n = ;
for (j = ; j <= i; j++)
{
n *= ;
n %= i;
if (n == )
{
res[temp] = j;
break;
}
}
} int max_re; while (cin >> n)
{
max_re = ;
for (i = ; i <= n; i++)
{
if (res[i] > res[max_re])
{
max_re = i;
}
}
cout << max_re << endl;
}
return ;
}

原文:链接1

原文:链接2

简单来说就是,一个整数的倒数的循环节,就是求10x≡1(mod n)10x≡1(mod n),很明显,如果gcd(10,n)≠1gcd(10,n)≠1的话,就无解。如果存在解的话,根据欧拉公式,那么这个解 x|phi(n)x|phi(n),所以直接暴力枚举xx就好了。

#include <bits/stdc++.h>
using namespace std; int phi(int m) {
int ans = m;
for(int i=; i*i<=m; i++) {
if(m%i==) {
ans = ans / i * (i - );
while(m%i==) m /= i;
}
}
if(m>) ans = ans / m * (m - );
return ans;
}
int fp(int a, int n, int p) {
int r = ;
while(n) {
if(n&) r = r * a % p;
a = a * a % p;
n >>= ;
}
return r;
}
int main() {
int n;
cin >> n;
int ans = , cnt = ;
for(int p=; p<=n; p++) if(__gcd(, p) == ) {
int phn = phi(p);
for(int i=; i<=phn; i++) {
if(phn%i == && fp(, i, p) == ) {
if(i>cnt) {
cnt = i;
ans = p;
}
break;
}
}
}
cout << ans << endl;
return ;
}

1/n循环节长度的更多相关文章

  1. HDU3977(斐波那契数列模n的循环节长度)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...

  2. xdu_1077:循环节长度

    题意很简单,就是给出p,q,求p/q的循环节长度. 由循环小数的循环部分的值等于等比数列求和的值S,列公式得到最简分数分母的值.最终得10^x%q==1(其中q为经过modify之后的值).搞清这些之 ...

  3. xdoj--1077: (循环节长度)

    1077: 循环节长度 时间限制: 1 Sec  内存限制: 128 MB提交: 103  解决: 37[提交][状态][讨论版] 题目描述 数一有很多的有理数,然而有的是有限小数,如1/2=0.5, ...

  4. AC日记——计算循环节长度 51nod 1035

    最长的循环节 思路: 我们尝试一种最简单的方法,模拟: 如何模拟呢? 每个数,对它模k取余,如果它的余数没有出现过,就补0继续模: 所以,当一个余数出现两次时,当前的长度即为循环节长度: 来,上代码: ...

  5. java 循环节长度

    循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153- 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...

  6. java实现第六届蓝桥杯循环节长度

    循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位. 下面的方法,可以 ...

  7. 蓝桥杯-循环节长度-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  8. Java求循环节长度

    两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位.下面的方法,可以求出循环节的长 ...

  9. ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。

    主要思路: 通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*10再对除数取余得到新的余数,并记录下来,知道出现的余数之前出现过,此时小数开始循环. 例如: 假设   ->     a ...

随机推荐

  1. man lspci

    lspci(8)                      Linux PCI Utilities                     lspci(8) NAME       lspci - 列出 ...

  2. echart--如何在折线图上添加矩形背景(可以借用bar柱状图的实现效果)

    当鼠标滑过,如何在折线图上添加矩形背景图呢? 具体如下: 上面的dataShadow的来源

  3. 13 Spring Boot Shiro使用JS-CSS-IMG

    filterChainMap.put("/403", "anon");filterChainMap.put("/assets/**", &q ...

  4. Vue在移动端App中使用的问题总结

    1.客户端中弹出键盘使得fixed布局错乱 Vue 在移动端中使用,当弹出键盘时,fixed 布局的元素可能会被键盘顶起. 例子图示及解决方法参考:https://blog.csdn.net/qq_3 ...

  5. asp.net 5 如何使用ioc 以及在如何获取httpcontext对象

    一切尽在大叔的博客中: http://www.cnblogs.com/TomXu/p/4496440.html

  6. Nginx与Lua开发

    1.Lua及基础语法 Nginx与Lua环境 场景:用Nginx结合Lua实现代码的灰度发布 1.Lua 是一个简洁.轻量.可扩展的脚本语言 2.Nginx+Lua优势 充分的结合Nginx的并发处理 ...

  7. git 部署服务

    git 知识 服务器知识 1.在本地完成代码的编写, 然后通过 git 管理版本. 在编码完成后 git push 到 git 云端(github 或者 码云 及其他). 2.在服务器端安装 git ...

  8. [CF1093E]Intersection of Permutations:树套树+pbds

    分析 裸的二维数点,博主用树状数组套平衡树写的,顺便pbds真好用. Update on 2018/12/20:再解释一下为什么是二维数点,第一维是\(la \leq i \leq ra\),第二维是 ...

  9. 3D Computer Grapihcs Using OpenGL - 09 Enable Depth Test

    启用Depth Test OpenGL是个3D绘图API,也就是说不只有xy坐标轴,还有第三个坐标轴z,z轴的方向是垂直于屏幕,指向屏幕内. 靠近人眼的方向是负方向,标准化设备坐标的最小值是-1, 最 ...

  10. 原生js实现简单的放大镜效果

    前言:相信很多同学在浏览购物网站的时候都会用到过放大镜的功能,这个功能在日常的网站也会经常用到.接下来我们开始实现一下它吧: (1)首先了解一下放大镜效果的html架构:如下图,它由两部分组成. ht ...