#4032: 第三個測資點TLE


a5480a5480 (歐歐)


#include<iostream>

using namespace std;

int main(){
    int a , b ;
    long long int result = 1 ;
    scanf("%d%d" , &a , &b);

    for(int i = 0 ; i < b ; i++)
            result = (a * result) % 10007;

    printf("%d\n" , result);
    system("PAUSE");
    return 0;
}

 

有高手可以給個建議嘛!?|||

#4658: Re:第三個測資點TLE


stmharry (橘子皮)


#include

using namespace std;

int main(){
    int a , b ;
    long long int result = 1 ;
    scanf("%d%d" , &a , &b);

    for(int i = 0 ; i < b ; i++)
            result = (a * result) % 10007;

    printf("%d\n" , result);
    system("PAUSE");
    return 0;
}

 

有高手可以給個建議嘛!?|||

把pow(x, 107)拆成pow(x, 32)^3 * pow(x, 4)^2 * pow(x, 2) * pow(x, 1)
#6841: Re:第三個測資點TLE


jdh8 (硬邦邦)


用 Binary powering


int powmod(int a, int b) {
  int bin=1, i, res=1, tmp=a%10007;

  for(i=0; i<32; i++) {
    if(b & bin)
      res = res * tmp % 10007;
    bin <<= 1;
    tmp = tmp * tmp % 10007;
  }
  return res;
}