NOIP2005普及组第四题
2017-06-13 21:21
134 查看
题目描述
乐乐是一个聪明而又勤奋好学的孩子。他总喜欢探求事物的规律。一天,他突然对数的正整数次幂产生了兴趣。
众所周知,2的正整数次幂最后一位数总是不断的在重复2,4,8,6,2,4,8,6……我们说2的正整数次幂最后一位的循环长度是4(实际上4的倍数都可以说是循环长度,但我们只考虑最小的循环长度)。类似的,其余的数字的正整数次幂最后一位数也有类似的循环现象:
循环 循环长度
2 2、4、8、6
4
3 3、9、7、1
4
4 4、6 2
5 5 1
6 6 1
7 7、9、3、1
4
8 8、4、2、6
4
9 9、1 2
这时乐乐的问题就出来了:是不是只有最后一位才有这样的循环呢?对于一个整数n的正整数次幂来说,它的后k位是否会发生循环?如果循环的话,循环长度是多少呢?
注意:
1. 如果n的某个正整数次幂的位数不足k,那么不足的高位看做是0。
2. 如果循环长度是L,那么说明对于任意的正整数a,n的a次幂和a + L次幂的最后k位都相同。
输入输出格式
输入格式:
输入文件circle.in只有一行,包含两个整数n(1 <= n < 10^100)和k(1 <= k <= 100),n和k之间用一个空格隔开,表示要求n的正整数次幂的最后k位的循环长度。
输出格式:
输出文件circle.out包括一行,这一行只包含一个整数,表示循环长度。如果循环不存在,输出-1。
输入输出样例
输入样例#1:
32 2
输出样例#1:
4
说明
对于30%的数据,k <= 4;
对于全部的数据,k <= 100。
NOIP2005普及组第四题
30分,取后4位数。
乐乐是一个聪明而又勤奋好学的孩子。他总喜欢探求事物的规律。一天,他突然对数的正整数次幂产生了兴趣。
众所周知,2的正整数次幂最后一位数总是不断的在重复2,4,8,6,2,4,8,6……我们说2的正整数次幂最后一位的循环长度是4(实际上4的倍数都可以说是循环长度,但我们只考虑最小的循环长度)。类似的,其余的数字的正整数次幂最后一位数也有类似的循环现象:
循环 循环长度
2 2、4、8、6
4
3 3、9、7、1
4
4 4、6 2
5 5 1
6 6 1
7 7、9、3、1
4
8 8、4、2、6
4
9 9、1 2
这时乐乐的问题就出来了:是不是只有最后一位才有这样的循环呢?对于一个整数n的正整数次幂来说,它的后k位是否会发生循环?如果循环的话,循环长度是多少呢?
注意:
1. 如果n的某个正整数次幂的位数不足k,那么不足的高位看做是0。
2. 如果循环长度是L,那么说明对于任意的正整数a,n的a次幂和a + L次幂的最后k位都相同。
输入输出格式
输入格式:
输入文件circle.in只有一行,包含两个整数n(1 <= n < 10^100)和k(1 <= k <= 100),n和k之间用一个空格隔开,表示要求n的正整数次幂的最后k位的循环长度。
输出格式:
输出文件circle.out包括一行,这一行只包含一个整数,表示循环长度。如果循环不存在,输出-1。
输入输出样例
输入样例#1:
32 2
输出样例#1:
4
说明
对于30%的数据,k <= 4;
对于全部的数据,k <= 100。
NOIP2005普及组第四题
30分,取后4位数。
//如何去判断是否时候循环节?数组存储? #include<iostream> #include<cstdio> #include<cmath> using namespace std; int n,k,q; int a[10000000]; //int quick(int x,int m)//快速幂到多大? //{ // int tmp=x,ans=1; // while(m) // { // if(m&1) // { // ans=ans*tmp % q; // } // tmp*=tmp; // m>>=1; // } // return ans; //} int main() { scanf("%d%d",&n,&k); k=pow(10,k); // a[1]=n%k; // a[2]=a[1]* (n%k) %k; // a[3]=a[2]* (n%k) %k; // a[4]=a[3]* (n%k) %k; int p=n%k; a[0]=1; for(int i=1;i<=1000000;i++) { a[i]=a[i-1]*p %k;//最多就是四位数*四位数 //kmp?判断循环节? //当后两位相同时,下一个数也是*p%k,因此也相同,以此类推,找出循环节。 if(i>1 && a[i]==a[1]){ cout<<i-1<<endl; return 0; } } cout<<-1<<endl; return 0; }
相关文章推荐
- 循环(NOIP2005普及组第四题)
- JZOJ(中山纪中) 2018.01.30【NOIP普及组】模拟赛D组 第四题
- [NOIP2005] 普及组 循环
- 【动态规划】Vijos P1104 采药(NOIP2005普及组第三题)
- NOIP2016普及组第四题——魔法阵
- NOIP2005普及组 循环
- NOIP2016普及组第四题——魔法阵
- NOIP2016 普及组第四题 魔法阵magic 题解
- noip 2015 普及 第四题 推销员 stl之priority_queue
- [NOIP普及组2006第四题]数列
- 【NOIP2005普及组T4】循环-高精度
- 博弈论(noip普及组2010第四题 三国游戏)
- 洛谷 P1047 校门外的树 NOIP2005 普及组
- NOIP2005普及组第4题 循环(高精度)
- noip普及组2005 采药
- NOIP2005普及组试题分析
- noip2016普及组复赛第四题 T4魔法阵
- NOIP2016普及组第四题魔法阵解说+水法
- NOIP2014-普及组复赛-第四题-子矩阵
- NOIP2005复赛 普及组 第二题