计算几何-二分求幂
来源:互联网 发布:linux 查看硬件命令 编辑:程序博客网 时间:2024/06/09 16:16
如何快速求解 a 的 b次幂? 【王道机试指南 P85 –待整理】
题目: 九度1441、1442、1443
#include<cstdio>#include<cstring>using namespace std;//题目要求最后三位,故中间值也只用保留三位即可,//可避免了中间值太大导致无法保存int main() { int a, b; while (scanf("%d %d", &a, &b) != EOF) { if (0 == a && 0 == b) break; int mul = 1; while (b != 0) { if (b % 2 == 1) { mul *= a; mul %= 1000; } b /= 2; a *= a; //下一位二进制的权重翻倍 a %= 1000; } printf("%d\n", mul); }}
/*Priblem: 九度1442Author: 3stone Time: 2017/3/30题意:给出等差或等比数列的前三项,求第k项 */#include<cstdio> using namespace std;long long seq[5];long long pow(long long a, long long b){//a^b long long ans = 1; while(b != 0){ if(b % 2 == 1){ ans *= a; ans %= 200907; } b /= 2; a = a*a%200907; } return ans;}int main(){ int n, k; while(scanf("%d", &n) != EOF){ for(int i = 0; i < n; i++){ for(int j = 0; j < 3; j ++){ scanf("%lld", &seq[j]); } scanf("%d", &k); if(seq[2]-seq[1] == seq[1]-seq[0]){//等差数列 printf("%lld\n", (seq[0]+(k-1)*(seq[1]-seq[0]))%200907 ); } else if(seq[2]*seq[0] == seq[1]*seq[1]){//等比数列 printf("%lld\n", seq[0]* pow(seq[1]/seq[0], k-1) % 200907); } } }//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 <iostream> #include <stdio.h> using namespace std; #define MAX 9973int 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++){ for(int j=1;j<=n;j++){ temp2[i][j] = 0; for(int k=1;k<=n;k++){ temp2[i][j] += (a[i][k]*b[k][j]); temp2[i][j] = temp2[i][j] % MAX; } } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ a[i][j] = temp2[i][j]; } } } int main(int argc, char** argv){ while(scanf("%d", &t)!=EOF){ for(int i=0;i<t;i++){ tr = 0; scanf("%d %lld", &n, &k); for(int j=1;j<=n;j++){ for(int l=1;l<=n;l++){ scanf("%d", &matrix[j][l]); temp1[j][l] = matrix[j][l]; } } k--; while(k>0){ if(k%2==1){ time(matrix, temp1, n); } k /= 2; time(temp1, temp1, n); } for(int p=1;p<=n;p++){ tr = tr+matrix[p][p]; tr = tr % MAX; } printf("%d\n", tr); } } return 0; }
0 0
- 计算几何-二分求幂
- 计算几何 [二分答案]
- 计算几何求公式
- HDU 4033 二分+计算几何
- poj2398+poj2318(计算几何+二分)
- POJ 2318 计算几何+二分
- poj2318 toy 计算几何+二分
- hdoj4643GSM【计算几何+二分思想】
- poj2857Expanding Rods【二分+计算几何】
- HDU4643 GSM 计算几何-二分
- HDU-3264 (计算几何+二分)
- poj 2507 crossed ladders(计算几何,二分)
- POJ 1905 Expanding Rods (二分+计算几何)
- poj 2507Crossed ladders 计算几何,二分
- uva 10668(计算几何+二分)
- poj1905(计算几何+二分)
- 计算几何叉乘二分+博弈
- POJ 2398 计算几何+二分+排序
- 熟练使用Android Studio,亲自体验,持续更新。
- 阿里巴巴iconfont(图标仓库)
- windows下安装和配置nginx
- 从源代码到可执行文件——编译全过程解析
- Swift
- 计算几何-二分求幂
- java再复习——多态的理解
- android之闹钟
- java中next和nextline的区别
- JVM调优总结(一)-- 一些概念
- jQuery给单选框默认选中方式
- 利用海康威视sdk 预览摄像机
- getActionBar().setDisplayHomeAsUpEnabled(true)这句报空指针异常的解决方式
- 在ubuntu用arm ds-5社区版配合linaro交叉编译工具开发android linux应用