原题如下:
Description
乐乐是一个聪明而又勤奋好学的孩子。他总喜欢探求事物的规律。一天,他突然对数的正整数次幂产生了兴趣。
众所周知,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位都相同。
Input
输入只有一行,包含两个整数n(1 <= n < 10^100)和k(1 <= k <= 100),n和k之间用一个空格隔开,表示要求n的正整数次幂的最后k位的循环长度。
Output
输出包括一行,这一行只包含一个整数,表示循环长度。如果循环不存在,输出-1。
Sample Input
32 2
Sample Output
4
Hint
对于30%的数据,k <= 4;
对于全部的数据,k <= 100。
本题需要高精度运算,没有掌握的同学慎做……
题目算是做出来了,Samlpe通过了,自己凑的几个数据也都正确了,说明这题目我算是理解了。
但是一直WA,估计应该就是高精度运算的问题吧,这个,好吧,我真的不会。
就连math.h函数库我也是现场百度的我会乱说吗?
大一下学期才教C语言,在宿舍又是充斥着我杀我闪的喊声,我该肿么办。
下面附上代码网址,GitHub真高端,赞一个。
https://github.com/Xuanwo/CUGB/blob/master/1004.c
如果除了高精度运算之外还有别的问题,请大神一定要告诉我哈。
丑陋的代码风格什么的,就忍一忍吧,纠正过来需要时间。
2013-10-4 2:54:26