最长的循环节

基准时间限制:1 秒 空间限制:131072 KB
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1035

题目:

正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数。

1/6= 0.1(6) 循环节长度为1
1/7= 0.(142857) 循环节长度为6
1/9= 0.(1) 循环节长度为1

Input:

输入n(10≤n≤1000)n(10≤n≤1000)

Output:

输出<=n的数中倒数循环节长度最长的那个数

sample:

input:

10

Output:

7

题解:

这题涉及一个神奇的数学证明,接下来我们证明看看:
首先我们用一个假设一个循环小数看看。
k=ba=0.0......s位(c1c2...cr)r位k=ba=0.0......⏟s位(c1c2...cr)⏟r位
可以看到kk是一位循环位数为rr的循环小数,现在我们把小数点右rr位。由于kk是rr位循环小数,所以小数部分只有前s位改变。当我们把这个数的小数部分与kk的小数部分相减后,小数部分就只剩最多s位了。这是的数可以表示成
k1=(10r−1)∗(b/a)k1=(10r−1)∗(b/a)
我们再右移ss位,这时候就变成了
k2=10s∗(10r−1)∗(b/a)k2=10s∗(10r−1)∗(b/a)
因为bb与aa互质,1010与aa互质,所以要k2k2为整数只有(10r−1)moda=0(10r−1)moda=0.因此有
10r≡1(moda)10r≡1(moda)
得出这个公式之后,我们只要每一个数如果它和10互质,就找出最小的满足公式的rr即可(说白了就是求10关于模a的阶),不过值得注意的是,根据欧拉定理10Φ(a)≡1(moda)10Φ(a)≡1(moda),r一定是Φ(a)Φ(a)的因子,这样就更容易求了。
实在看不懂可以看下这个:
http://w3.math.sinica.edu.tw/math_media/d253/25311.pdf

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
int phi[maxn];
void Phi()//欧拉筛
{memset(phi,0,sizeof(phi));phi[1]=1;for(int i=2;i<=maxn;i++){if(!phi[i]){for(int j=i;j<=maxn;j+=i){if(!phi[j])phi[j]=j;phi[j]=phi[j]/i*(i-1);}}
//      cout<<i<<" "<<phi[i]<<endl;}
}
int gcd(int a,int b)
{return b?gcd(b,a%b):a;
}
int qpow(int a,int b,int mod)//快速幂
{long long ans=1;while(b){if(b&1) ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans;
}
int main()
{int T,n,i,j,k,temp,ans;Phi();long long sum;cin>>n;int _max=-1;for(i=2;i<=n;i++){temp=gcd(i,10);if(temp!=1)continue;for(j=1;j<=phi[i];j++){if(phi[i]%j==0&&qpow(10,j,i)==1){if(j>_max){_max=j;ans=i;}
//              cout<<i<<" "<<j<<endl;break;}}}cout<<ans<<endl;
}

转载于:https://www.cnblogs.com/na7-TRZNDP-Z/p/9782457.html

51nod 最长的循环节(对循环小数位的理解+快速幂+欧拉筛)相关推荐

  1. 分数换算小数补0法_数学 | 循环小数的循环节以及永远追不上的乌龟

    今天带学生做练习,遇到一个循环小数的问题: 题目:0.0909090-的循环节是(  ). A.09       B.90       C.090      D.9090 不少学生选择B项90,习题答 ...

  2. 51Nod 1046 A^B Mod C(日常复习快速幂)

    1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = ...

  3. 最长的循环节 之 有趣的无限循环小数

    如题: 1035 最长的循环节  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求& ...

  4. 【音频处理】Polyphone 样本编辑 和 样本工具 ( 波形图 | 信息 | 频率分析 | 均衡器 | 播放器 | 终点裁剪 | 自动循环节 | 空白移除 | 音量 平衡 音调 调整 )

    文章目录 一. Polyphone 工具简介 1. 相关参考资料 2. 简要介绍 (1) 软件界面 二. 音源编辑 1. 波形图 ( 1 ) 波形图样式 ( 2 ) 波形图操作 2. 信息 ( 1 ) ...

  5. 嫦娥奔月(KMP,找循环节)及其扩展KMP

    问题描述 <归妹>卦辞为:昔者恒我(姮娥)窃毋死之药于西王母,服之以(奔)月.将往,而枚占于有黄.有黄占之曰:"吉.翩翩归妹,独将西行.逢天晦芒,毋惊毋恐,后且大昌". ...

  6. 【文文殿下】浅谈KMP算法next数组与循环节的关系

    KMP算法 KMP算法是一种字符串匹配算法,他可以在O(n+m)的时间内求出一个模式串在另一个模式串下出现的次数. KMP算法是利用next数组进行自匹配,然后来进行匹配的. Next数组 Next数 ...

  7. 欧拉函数求一个数倒数的循环节长度

    首先,费马小定理a与p互素,则a^(p-1)≡1(mod p)  对于一个素数p,取a=10,那么10^(p-1)≡1(mod p)  如果找到一个正整数e使得10^e/p-1/p为整数,那么e就是1 ...

  8. 求循环小数的表示以及循环节长度

    问题:输入整数a和b,输出a/b的循环小数表示以及其循环节长度.例如 a=5 b=43 小数表示为0.(116279069767441860465),循环节长度为21 分析:模拟长除法的计算过程. ① ...

  9. 薛XX后代的IQ CSU1597【循环节】或【快速幂】

    薛先生的后代IQ[循环节]||[快速幂] 薛先生想改变后代的IQ,为此他发明了一种药,这种药有三种属性:A, B, P.他父亲的智商为X,薛先生的智商为Y,用了这种药之后,薛先生的孩子的智商就可以变为 ...

  10. hdu4291 暴力循环节+矩阵快速幂

    题意:       给你一个关系式,x[n] = 3*x[n-1] + x[n-2],求x(x(x[n]))%1000000007. 思路:       做这个题目要明确一点,就是对于取余操作大多数时 ...

最新文章

  1. windowsphone开发_[app开发定制公司]开发app需要什么技术呢?
  2. mysql导出数据 程序_MySQL数据导出与导入程序代码
  3. 内存泄漏和内存溢出有什么区别
  4. ios开发 多人语音聊天_微信“暗黑模式”正式上线!语音界面大改,新增贴心“群工具”...
  5. php比较float大小,PHP中两个float(浮点数)比较实例分析
  6. 在Visual Studio上开发Node.js程序
  7. 查看可执行文件的运行架构_在运行查询之前如何查看结果集的架构
  8. leetcode hot 3-4
  9. ASP.NET2.0入门经典(第4版)—3.5 服务器控件的类型(2)--zt
  10. Java SE 8新特性
  11. java是否安装outlook,Java程序定期检查ms Outlook是否有新邮件
  12. 基于RV1126平台imx291分析 --- 统计已注册的设备信息
  13. 麦当劳中国首个IT战略研发中心在南京启用;大食代积极布局中国西南市场 | 美通企业日报...
  14. Java编写程序获取验证码
  15. 与你们一起的那些时光
  16. Vue.js下载与安装
  17. 小米开箱 (原创)
  18. CoreML遇到的问题和原因
  19. rtthread工业使用_RT Thread SPI设备 使用
  20. 【Akka】Akka Actor生命周期

热门文章

  1. 普式变换,仿射变换,人脸对齐
  2. linux发送邮件 脚本,linux脚本发送邮件 shell发送邮件(使用 msmtp+mutt+shell来实现)
  3. C++ 构造函数后面有冒号 ~ : ()
  4. springmvc中常见的简单的文件上传和下载
  5. linux ffmpeg插件,Linux FFmpeg(含x264、lame插件)安装记录
  6. 正则式转化nfa 代码_从0到1打造正则表达式执行引擎(二)
  7. 针式打印机打印发虚_针式打印机使用技巧
  8. maven 编译出错解决
  9. 串口 浮点数 结构体_quot;结构体quot;和quot;共用体quot;在单片机中的妙用
  10. 在spring管理的类的要注意问题