很裸的一个欧拉函数的应用
因为9901时一个素数,所哟他的欧拉函数值为9900.根据欧拉定理可知
所以只需要计算数列的前9900项就可以了,后面就是前面的重复而已。
01
#include<iostream>
02 #include<memory.h>
03 using namespace std;
04 int main()
05 {
06 int n , k;
07 int tb [ 10000 ];
08 while( cin >>n >> k)
09 {
10 int ans = 0;
11 int tl = 0;
12 memset( tb , 0 , sizeof( tb));
13 tb [ 0 ] = 1;
14 for( int i = 1; i < 9901; i ++)
15 {
16 tb [ i ] =n * tb [ i - 1 ] % 9901;
17 tl += tb [ i ];
18 tl %= 9901;
19 }
20 int cir = k / 9900;
21 int ed = k % 9900;
22 ans = tl * cir % 9901;
23 for( int i = 1; i <= ed; i ++)
24 ans =( ans + tb [ i ]) % 9901;
25 cout << ans << endl;
26 }
27 }
02 #include<memory.h>
03 using namespace std;
04 int main()
05 {
06 int n , k;
07 int tb [ 10000 ];
08 while( cin >>n >> k)
09 {
10 int ans = 0;
11 int tl = 0;
12 memset( tb , 0 , sizeof( tb));
13 tb [ 0 ] = 1;
14 for( int i = 1; i < 9901; i ++)
15 {
16 tb [ i ] =n * tb [ i - 1 ] % 9901;
17 tl += tb [ i ];
18 tl %= 9901;
19 }
20 int cir = k / 9900;
21 int ed = k % 9900;
22 ans = tl * cir % 9901;
23 for( int i = 1; i <= ed; i ++)
24 ans =( ans + tb [ i ]) % 9901;
25 cout << ans << endl;
26 }
27 }