如何快速求解 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...