計算幾何 二分求冪

2021-07-27 08:02:42 字數 1686 閱讀 6753

如何快速求解 a 的 b次冪?【王道機試指南 p85 –待整理】

題目: 九度1441、1442、1443

#include

#include

using

namespace

std;

//題目要求最後三位,故中間值也只用保留三位即可,

//可避免了中間值太大導致無法儲存

int main()

b /= 2;

a *= a; //下一位二進位制的權重翻倍

a %= 1000;

}printf("%d\n", mul);

}}

/*

priblem: 九度1442

author: 3stone

time: 2017/3/30

題意:給出等差或等比數列的前三項,求第k項

*/#include

using namespace std;

long long seq[5];

long long pow(long long a, long long b)

b /= 2;

a = a*a

%200907;

} return ans;

}int main()

scanf("%d", &k);

if(seq[2]-seq[1] == seq[1]-seq[0])

else

if(seq[2]

*seq[0] == seq[1]

*seq[1])

}}//while

return

0;}

【九度的測試點還是太弱了,還是應該在每一項都取模再計算】

seq[0]%200907 + (k-1)*(seq[1]%200907 - seq[0]%200907 )) % 200907

seq[0]%200907 * pow(seq[1]/seq[0]%200907 , k-1) % 200907

//九度 1443

#include

#include

using namespace std;

#define max 9973

int t, n, tr;

long long k;

int matrix[15][15];

int temp1[15][15];

int temp2[15][15];

void time(int a[15], int b[15], int n)

} }

for(int i=1;i<=n;i++)

} } int main(int argc, char** argv)

} k--;

while(k>0)

k /= 2;

time(temp1, temp1, n);

} for(int p=1;p<=n;p++)

printf("%d\n", tr);

} }

return

0;

}

二分求冪,快速求冪

1 2 3 4 5 6 7 8 9 10 11 12 intpow3 inta,intb returnr 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 intpow4 intx,intn result x n 1 whil...

二分求冪 3

題目1443 tr a 題目描述 a為乙個方陣,則tr a表示a的跡 就是主對角線上各項的和 現要求tr a k 9973。輸入 資料的第一行是乙個t,表示有t組資料。每組資料的第一行有n 2 n 10 和k 2 k 10 9 兩個資料。接下來有n行,每行有n個資料,每個資料的範圍是 0,9 表示方...

二分求冪 A B

problem description 求a b的最後三位數表示的整數。說明 a b的含義是 a的b次方 input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和b組成 1 a,b 10000 如果a 0,b 0,則表示輸入資料的結束,不做處理。output 對於每個測試例項,請輸出a...