xdu_1077:循环节长度
题意很简单,就是给出p,q,求p/q的循环节长度。
由循环小数的循环部分的值等于等比数列求和的值S,列公式得到最简分数分母的值。最终得10^x%q==1(其中q为经过modify之后的值)。搞清这些之后,套kuangbin大神的BSGS模板就可以了。
题目链接: http://202.117.120.247/problem.php?id=1077
#include<bits/stdc++.h> using namespace std; //baby_step giant_step // a^x = b (mod n) n为素数,a,b < n // 求解上式 0<=x < n的解 #define MOD 76543 #define next nxt int hs[MOD],head[MOD],next[MOD],id[MOD],top; void insert(int x,int y) { int k = x%MOD; hs[top] = x, id[top] = y, next[top] = head[k], head[k] = top++; } int find(int x) { int k = x%MOD; ; i = next[i]) if(hs[i] == x) return id[i]; ; } int gcd(int a,int b) { return b? gcd(b,a%b):a; } int BSGS(int a,int b,int n) { memset(head,-,sizeof(head)); top = ; ) ; int m = sqrt(n*1.0), j; , p = ; ; i < m; ++i, p = p*a%n)insert(p*b%n,i); for(long long i = m; ; i += m) { && i != j ) { // cout<<i<<"=="<<j<<endl; return i-j; } if(i > n)break; } ; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); ,b=,n; int p,q; while(~scanf("%d%d",&p,&q)) { n=q/gcd(p,q); // while(n%2==0) n/=2; // while(n%5==0) n/=5; int ans = BSGS(a,b,n); printf("%d\n",ans); } }
xdu_1077:循环节长度的更多相关文章
- HDU3977(斐波那契数列模n的循环节长度)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...
- xdoj--1077: (循环节长度)
1077: 循环节长度 时间限制: 1 Sec 内存限制: 128 MB提交: 103 解决: 37[提交][状态][讨论版] 题目描述 数一有很多的有理数,然而有的是有限小数,如1/2=0.5, ...
- AC日记——计算循环节长度 51nod 1035
最长的循环节 思路: 我们尝试一种最简单的方法,模拟: 如何模拟呢? 每个数,对它模k取余,如果它的余数没有出现过,就补0继续模: 所以,当一个余数出现两次时,当前的长度即为循环节长度: 来,上代码: ...
- 1/n循环节长度
/* * 求1/i的循环节长度的最大值,i<=n */ ; int res[MAXN]; // 循环节长度 int main() { memset(res, , sizeof(res)); in ...
- java 循环节长度
循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153- 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...
- java实现第六届蓝桥杯循环节长度
循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位. 下面的方法,可以 ...
- 蓝桥杯-循环节长度-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- Java求循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位.下面的方法,可以求出循环节的长 ...
- ACM(数学问题)——UVa202:输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。
主要思路: 通过模拟除法运算过程,来判断循环节结束的位置,不断将余数*10再对除数取余得到新的余数,并记录下来,知道出现的余数之前出现过,此时小数开始循环. 例如: 假设 -> a ...
随机推荐
- Activity常用的方法
1. View findViewById(int id) //根据组件ID取得组件对象setContentView(int LayoutResID) //设置布局文件,设置显示组件 2. TextVi ...
- Python 操作 Azure Blob Storage
笔者在<Azure 基础:Blob Storage>一文中介绍了 Azure Blob Storage 的基本概念,并通过 C# 代码展示了如何进行基本的操作.最近笔者需要在 Linux ...
- {新人笔记 勿看} spring mvc第一步
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- spring boot 入门操作(三)
spring boot入门操作 devtools热部署 pom dependencies里添加依赖 <dependency> <groupId>org.springframew ...
- 重温Android中的消息机制
引入: 提到Android中的消息机制,大家应该都不陌生,我们在开发中不可避免的要和它打交道.从我们开发的角度来看,Handler是Android消息机制的上层接口.我们在平时的开发中只需要和Hand ...
- 出位的template.js 基于jquery的模板渲染插件
找了好几款基于jquery的模板渲染插件,无一感觉很难用(教程较少.绑定不统一),也可能我智商问题,比如jquery template.js .jtemplate.js. 然后在github上找到这一 ...
- wildfly与mysql数据库连接问题
wildfly报错: Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link f ...
- Random随机数种子生成,减少生成重复随机数的可能
我们都知道使用Random可以生成随机数,默认的无参的构造函数New Random().使用与时间相关的默认种子值,初始化 System.Random 类的新实例. 这种方式生成随机数时重复的概率很大 ...
- 本地jar上传到本地仓库
转自:http://www.blogjava.net/fancydeepin/archive/2012/06/12/380605.html thanks!! Maven 确确实实是个好东西,用来管 ...
- Java程序设计模式系列之适配器模式
理解适配器设计模式需要从生活中的场景进行联系,在生活当中有那些东西能够称为适配器呢?从字面上理解,"适配"的意思就是让一个东西和另一个东西配对,能够让他们一起工作,比如大家用的笔记 ...