快速幂+叉乘计算--最基础的算法,最详细的注释
来源:互联网 发布:java正则表达式符号 编辑:程序博客网 时间:2024/05/16 10:56
敲代码也敲了不少时间了,整理一下知识,日后用起来也方便是不。
不赘语了,从头来最简单的先上。
快速幂
原理很容易理解,就是利用了二进制表达的特点。指数的二进制串上若为1则代表结果的因子中含有2的当前位阶数的基数。
由于二进制的特性,这个值是上一位值的两倍,可由递推得到。
为什么说快速幂快呢,emmmm 还是举个栗子吧。
3^65535(2d的16次方-1) 如果直接用pow()他会给你循环65535次
而快速幂只要16次 对比一下的确有点快
代码
int power(int x,int y){ //x基数 y指数 int i,t=1; while(y) //直到指数耗尽 { if(y&1) //判断指数二进制位状态 t*=x; //乘上当前位的基 x*=x; //基随着指数位倍增 y>>1;//处理指数的下一位 }
嗯。。两个空间叉乘的结果在数值上等于临边为这两个向量的平行四边形的面积。
于是就,可以愉快的计算多边形的面积了。
直接代码
#include<stdio.h>#define N 200int main(){ int n,x[N],y[N]; //两个数组表示点集 while(scanf("%d",&n),n) //输入点的个数 { for(int i=0;i<n;i++) scanf("%d%d",&x[i],&y[i]); //顺序输入点的坐标 for(int i=0;i<n;i++) { int j=(i+1)%n; //取余为了首尾衔接 sum+=x[i]*y[j]-x[j]*y[i]; //套用叉乘公式 } sum=sum/2.0; //计算的结果是平行四边形,而多边形是由三角形组成的,故除2 sum<0?-1sum:sum; //取绝对值,凹形时为负值 printf("%.f",sum); } return 0;}
阅读全文
1 0
- 快速幂+叉乘计算--最基础的算法,最详细的注释
- 矩阵快速幂--最基础的算法,最详细的注释
- 字典树(链式+数组模拟)--最基础的算法,最详细的注释
- spring2.5 最详细的注释讲解
- php最详细的配置文件(中文注释)
- 最详细的WSDD配置文件注释
- Java基础之线程最详细最精简的介绍
- 最详细的Fragment基础讲解
- Glide最详细的基础使用
- 逐段注释--最简单,最方便,最快速,最实用,最高效,最清晰,最直接,最好的调试方法
- 最详细-vc TabCtrol控件的用法(有注释)
- 最快速的开平方算法
- 最朴素的快速排序算法
- 排序算法---最常用的快速排序
- 最常用的排序:快速排序算法
- 最基本的快速幂
- 觉得最基础的算法题
- logistic regression 最基础的分类算法
- 搭建ACE及TAO开发环境的快速方法(Linux+Docker篇)
- js设计模式之Facade
- source insight死活打不开解决方法
- Oracle SQL高级编程——Model子句全解析
- Openwrt中怎样配置pptp方式加入vpn的支持
- 快速幂+叉乘计算--最基础的算法,最详细的注释
- Who needs decrypted kernels anyways?
- C++,java算法与数据结构(一)--慕课网笔记
- Oracle SQL高级编程——位图联结索引
- Sublime Text3 绑定鼠标右键方法
- Linux常用命令大全
- C++,java算法与数据结构(二)--慕课网笔记
- Java的this关键字
- Linux运维必备命令行工具