HOJ 1842 Raising Modulo Numbers a的b次方模n的问题(简单题)

HOJ 1842 Raising Modulo Numbers a的b次方模n的问题(简单题)
 1 #include  < iostream >
 2 using   namespace  std;
 3 // 此部分为主要代码
 4 // 求a的b次方模n
 5 int  mod( int  a, int  b, int  n)
 6 {
 7    int t = 1,y = a;
 8    while(b)
 9    {
10        if(b%2) t = (t*y)%n;
11        y = (y*y)%n;
12        b>>=1;
13    }

14    return t;
15}

16 using   namespace  std;
17
18 int  main()
19 {
20    int z;
21    scanf("%d",&z);
22    while(z--)
23    {
24        int n,total = 0;
25        scanf("%d",&n);
26        int a,b,t;
27        scanf("%d",&t);
28        while(t--)
29        {
30            scanf("%d%d",&a,&b);
31            a%=n;
32            total+=mod(a,b,n);
33        }

34        printf("%d\n",total%n);
35    }

36    return 0;
37}

38

你可能感兴趣的:(HOJ 1842 Raising Modulo Numbers a的b次方模n的问题(简单题))