当前位置: 首页 > news >正文

纸牌网站建设企业网站如何建设流程

纸牌网站建设,企业网站如何建设流程,房地产十大营销手段,网络有限公司做女装网站的#x1f436;博主主页#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍#x1f525;专栏系列#xff1a;线性代数#xff0c;C初学者入门训练#xff0c;题解C#xff0c;C的使用文章#xff0c;「初学」C #x1f525;座右铭#xff1a;“不要等到什么都没有了#xff0c;才下… 博主主页ᰔᩚ. 一怀明月ꦿ  ❤️‍专栏系列线性代数C初学者入门训练题解CC的使用文章「初学」C 座右铭“不要等到什么都没有了才下定决心去做” 大家觉不错的话就恳求大家点点关注点点小爱心指点指点 目录 概念 大数加法 加法原理 编程分析 大数乘法 乘法原理 编程分析 (1)累加法 (2)直接乘积法 效率对比 结果 概念 计算机发明的初衷就是解决以人类计算能力无法有效解决的问题这类问题包括反复多次的复杂运算也包括天文级数字的运算但就c语言的初步学习可以发现不论是int还是float乃至更大的unsigned long long int和double形式的数据都是有极限的。一般形式的数据里最大的整型是unsigned long long int极限为18446744073709551615是10^19次方的数量级就日常生活的问题可能足够了但以计算机的计算能力而言远远不够。 例如64位下的一个整形为例一个整形四个字节32bit位存储的最大数据为4294967296然而4294967295只有10位如果字符数组存储只需两个字节而且数组长度可以非常大。所以用字符数组存储数据模拟计算数据去解决天文级数字的运算等难题。 大数加法 加法原理 进行计算之前我们先明白加法的原理 例如 12921 290余数11 余数1 取模1 11余数2 余数0 取模2 所以等于21 转化为编程思想 例如 12921 strstring的对象next表示进位 next0; str:” 29next11 next1 str:”1” 10next2 next0 str:”12” 最后逆置一下strstr:”21 编程分析 string addStrings(string num1, string num2)//num1存储第一个数据num2存储第二个数据 {int end1num1.size()-1,end2num2.size()-1;//这里我们获取每个数据的最后一位数的下标因为我们进行计算都是从最后一位数计算的int next0;//表示的进位string str;//存储两个数据之和的对象while(end10||end20)//值得注意的是我们对两个数据相加是对每一个数据对应位相加但如果一个数据min的位数少于另一位max数据我们不能停止相加只是max多余的位都加0而已所以这里的循环结束的条件是两个数据遍历完才停止。{//我们存储数据是用字符数组计算数据还是以整形计算int x1end10?num1[end1]-0:0;//x1就是获取一个数据end1下标的数据之所以会减0在num存储的数据是字符只要减0才是对应的整数。end10?num1[end1]-0:0如果num1数据遍历完了就会让x1的值为0int x2end20?num2[end2]-0:0;//x2就是获取一个数据end2下标的数据之所以会减0在num存储的数据是字符只要减0才是对应的整数。end20?num2[end2]-0:0如果num2数据遍历完了就会让x2的值为0int retx1x2next;//计算两个数据对应位之和nextret/10;//两个数据对应位之和大于等于10就会产生进位retret%10;//两个数据对应位之和小于10strret0’;//存储两个数据对应位之和小于10的部分end1--,end2—;//让两个数据的下标往前移动}reverse(str.begin(),str.end());//因为str存储的数据是相反的所以需要逆置一下reverse是string类里的逆置函数if(next1)//就是两个数据相加时最后一位也可能产生进位例如983str里只保存了01而最高位的1还没有保存就跳出循环了所以在这里可以将进位头插在str中str.insert(0,1,1’);//在str下标为0处插入1个’1return str; } 大数乘法 乘法原理 进行计算之前我们先明白乘法的原理 例如 25*12300 5*20余数10 取余1 取模0 2*21余数5 取余0 取模5 个位乘积50 5*1余数5 取余0 取模5 2*1余数2 取余0 取模2 十位乘积25 总积25*1050300 转化为编程思想 例如 25*12300 strN:string的对象,strstring的对象next表示进位 next0 str“” strN“0” 5*2next10 next1 str“0” 2*2next5 next0 str“05” strNstrN“50” next0 str“” 5*1next5 next0 str“5” 2*1next2 next0 str“52” strNstrN”250” strN“300 编程分析 (1)累加法 其实乘法可以转换为加法例如25*12我们可以将25累加12次这样也能达到乘法的效果。 缺陷效率低 string multiply_1(string num1, string num2)//num1存储第一个数据num2存储第二个数据 {string strNnum1;//strN时记录乘积总和的对象我们将num2的数据传递strNint n0;//n是存储的是num2整形的数字例如num2“123”,n123for(int i0,jpow(10,num2.size()-1);inum2.size();i,j/10)//这个循环就是转换过程{n(num2[i]-0)*j;}n-1;//因为我们开始在strN中存储了num2的数据所以我们在家的过程需要少累加一次while(n—)//通过循环开始累加{//我们存储数据是用字符数组计算数据还是以整形计算string str;//str存储的是一次累加的数据int end1num1.size()-1,end2strN.size()-1;//这里我们获取每个数据的最后一位数的下标因为我们进行计算都是从最后一位数计算的int next0;//进位while(end10||end20){int x1end10?num1[end1]-0:0;//x1就是获取一个数据end1下标的数据之所以会减0在num存储的数据是字符只要减0才是对应的整数。end10?num1[end1]-0:0如果num1数据遍历完了就会让x1的值为0int x2strN[end2]-0;//x2就是获取一个数据end2下标的数据之所以会减0在strN存储的数据是字符只要减0才是对应的整数。int retx1x2next;//计算两个数据对应位之和nextret/10;//两个数据对应位之和大于等于10就会产生进位retret%10;//两个数据对应位之和小于10strret0;//存储两个数据对应位之和小于10的部分end1--,end2--;//让两个数据的下标往前移动}reverse(str.begin(),str.end());//因为str存储的数据是相反的所以需要逆置一下reverse是string类里的逆置函数if(next1)//就是两个数据相加时最后一位也可能产生进位例如983str里只保存了01而最高位的1还没有保存就跳出循环了所以在这里可以将进位头插在str中str.insert(0,1,1);//在str下标为0处插入1个’1strNstr;//将str的数据传递给strN}return strN; } (2)直接乘积法 直接通过乘法的计算原理进行计算 string multiply(string num1, string num2)//num1存储第一个数据num2存储第二个数据 {int end2num2.size()-1;//这里我们获取每个数据的最后一位数的下标因为我们进行计算都是从最后一位数计算的string strN(0”);//strN是记录乘积总和的对象初始值为’0int flag-1;//是一个标志while(end20(num1[0]!0num2[0]!0’))//只要遍历完num2中的数据就结束运算还有如果num1和num2中只要有一个为’0就结束运算{int end1num1.size()-1;//这里我们获取每个数据的最后一位数的下标因为我们进行计算都是从最后一位数计算的string str;//记录每次num1中的数据和num2中每一位值的乘积int next0;//进位int x2num2[end2]-0’;//x2就是获取一个数据end2下标的数据之所以会减0在strN存储的数据是字符只要减0才是对应的整数。while(end10)//遍历num1中的数据{int x1num1[end1]-0;//x1就是获取一个数据end1下标的数据之所以会减0在num存储的数据是字符只要减0才是对应的整数。int retx1*x2next;//计算num1每一位和num1每一位的乘积nextret/10;//num1每一位和num1每一位的乘积大于10就会产生进位retret%10;//num1每一位和num1每一位的乘积小于10的值strret0’;//存储num1每一位和num1每一位的乘积小于10的值end1—;//让num1数据的下标往前移动}flag;//标志1end2--;//让num2数据的下标往前移动reverse(str.begin(),str.end());//因为str存储的数据是相反的所以需要逆置一下reverse是string类里的逆置函数int countflag;//传递标志的值while(count—)//num2每一位值和num1数据乘积等级是不同的num1第一位是个位第二位是位第三位是千位…所以str存储数据是应该加上对应数目的’0{str0;}char chnext0;if(next!0)//就是num2每一位值和num1数据乘积时最后一位也可能产生进位例如98*3str里只保存了94而最高位的2还没有保存就跳出循环了所以在这里可以将进位头插在str中str.insert(0,1,ch);strNaddStrings(strN, str);//将num2每一位值和num1数据乘积累加给strNaddStrings是我们前面提到的大数加法}return strN; } 效率对比 同时计算999999*999999看所需要的时间 #includeiostream #includecmath using namespace std; string multiply_1(string num1, string num2) {string strNnum1;int n0;for(int i0,jpow(10,num2.size()-1);inum2.size();i,j/10){n(num2[i]-0)*j;}n-1;while(n--){string str;int end1num1.size()-1,end2strN.size()-1;int next0;while(end10||end20){int x1end10?num1[end1]-0:0;int x2strN[end2]-0;int retx1x2next;nextret/10;retret%10;strret0;end1--,end2--;}reverse(str.begin(),str.end());if(next1)str.insert(0,1,1);strNstr;}return strN; } //25 // 3 //next0 //5*3next15 //next1 //str:5 //2*3next7 //str:57 //75 string addStrings(string num1, string num2) {int end1num1.size()-1,end2num2.size()-1;int next0;string str;while(end10||end20){int x1end10?num1[end1]-0:0;int x2end20?num2[end2]-0:0;int retx1x2next;nextret/10;retret%10;strret0;end1--,end2--;}reverse(str.begin(),str.end());if(next1)str.insert(0,1,1);return str; } string multiply(string num1, string num2) {int end2num2.size()-1;string strN(0);int flag-1;while(end20(num1[0]!0num2[0]!0)){int end1num1.size()-1;string str;int next0;int x2num2[end2]-0;while(end10){int x1num1[end1]-0;int retx1*x2next;nextret/10;retret%10;strret0;end1--;}flag;end2--;reverse(str.begin(),str.end());int countflag;while(count--){str0;}char chnext0;if(next!0)str.insert(0,1,ch);strNaddStrings(strN, str);}return strN; } int main() {string s1,s2;cins1s2;size_t begin_1clock();cout累加法的值multiply_1(s1, s2)endl;size_t end_1clock();cout累加法的时间end_1-begin_110^-3msendl;size_t begin_2clock();cout直接乘积法的值multiply(s1, s2)endl;size_t end_2clock();cout直接乘积法的时间end_2-begin_210^-3msendl;return 0; } 结果 结果 999999 999999 累加法的值999998000001 累加法的时间51161310^-3ms 直接乘积法的值999998000001 直接乘积法的时间1210^-3ms 如果大家还有不懂或者建议都可以发在评论区我们共同探讨共同学习共同进步。谢谢大家
http://www.pierceye.com/news/604638/

相关文章:

  • 无锡专业网站制作的公司移动互联网开发技术有哪些
  • 济南市城市建设集团网站wordpress user role editor
  • linux 配置网站域名做资金盘 互助盘的网站
  • 网站开发工程师培训定制网站开发app费用
  • 给菠菜网站做外包免费做思维导图的网站
  • 网站建设服务哪家好如何做属于自己的网站
  • 正规的佛山网站建设公司网站空间怎么续费
  • 网站建设需要照片吗网站策划网站建设企业
  • 网站标签的作用北京医疗网站建设公司
  • 西部数码成品网站商务网站建设调研
  • 服装行业网站模板网页无法访问公司内网
  • 如何建设一个不备案的网站互联网的意思
  • 承德网站开发应聘软件开发工程师简历
  • 创意手机网站做go分析和kegg分析网站
  • 房地产开发建设网站wordpress多站点cdn
  • 医疗室内设计网站推荐wordpress htaccess
  • 织梦 图片网站源码uml电子商务网站建设文档
  • 商用图片的网站开发一款交友软件多少钱
  • 15年做哪些网站能致富单位做网站有哪些
  • 免费模板建站现在装宽带要多少钱
  • 泉州网站建设培训电商网站 支付宝接口
  • 国外网站素材公益广告设计图片
  • 个人做 网站2019电销助手app
  • 时尚网站网页设计公司想建立一个网站吗
  • 做竞价的网站wordpress还有什么
  • 单位建设网站用途硅胶鞋垫移动网站建设
  • 网站管理员招聘设计平台属性
  • 北票网站建设营销网站如何建设
  • 山东一建建设有限公司官方网站企业电子商务网站设计的原则
  • 江门网站制作培训学校做任务的阅币漫画网站