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

网站排名软件推荐网站开发完要过审是啥意思

网站排名软件推荐,网站开发完要过审是啥意思,企业网站外包,网站建设都有什么功能大数#xff0c;就是C/C中利用基本类型所不能存储的数字#xff0c;少则数十位#xff0c;大则几万位#xff0c;如何存储和计算大数就是本文的内容。 在C和C中#xff0c;没有存储大数的数据结构#xff0c;就算 unsigned long long也只能表示19位的数字  如果我们用d…  大数就是C/C中利用基本类型所不能存储的数字少则数十位大则几万位如何存储和计算大数就是本文的内容。 在C和C中没有存储大数的数据结构就算 unsigned long long也只能表示19位的数字  如果我们用double则会出现精度不准确的问题如果我们想精确储存计算大数学习本文是必要的。  存储大数的方法有两种不管是数组还是字符串在运算时他们的原理其实是相同的。 看下边两道题带你了解大数的计算方法 字符串相加  这道题的思路很简单不能将字符串转换为整数形式就算转了我们也过不了这道题。因为数据的范围很大。  长度为一万的数字字符串这就是一个很大的数了。  解决思路还记得我们小学时是如何进行加法运算的吗我们从地位算起如果两个加数和大于10我们就会进一按照这种思路依次进行计算知道求出结果为止。 通过这种思路我们可以写出这样的代码 class Solution { public:string addStrings(string num1, string num2) {int i num1.length() - 1, j num2.length() - 1, add 0;string ans ;while (i 0 || j 0) {int x i 0 ? num1[i] - 0 : 0;int y j 0 ? num2[j] - 0 : 0;int result x y add;ans.insert(ans.begin(),0 result % 10);add result / 10;i - 1;j - 1;}return ans;} };可以看出计算时是从字符串末尾一次项前进行求和计算。如果该数大于10就会将进位更新为1,改为的结果直接将相加后的值模上10的计算结果头插进去即可。 三目运算符十分巧妙在求和时要一直将两数组的元素全部加一遍如果短的数组已经加完就作为0这样也不会出现越界访问还解决了要判断是哪个数组更短的问题统一对待。在每次对应位计算完成之后更新add进位数。然后继续加进位的数字。 信心满满提交  最后一次进位的情况被我们忽略了就像上边的错误用例一样。所以当i和j全部减到零并且进位add也等于0时循环结束。 class Solution { public:string addStrings(string num1, string num2) {int i num1.length() - 1, j num2.length() - 1, add 0;string ans ;while (i 0 || j 0 || add ! 0) {int x i 0 ? num1[i] - 0 : 0;int y j 0 ? num2[j] - 0 : 0;int result x y add;//该位置上两个数字求和结果ans.insert(ans.begin(),0 result % 10);add result / 10;i - 1;//向前一位进发j - 1;}return ans;} };这道题就完成了。 就算两个字符串很长很长计算也很快结果也是准确的。 用数组进行存储运算 用数组存储的话要保证数组中任意元素不大于10这才是无误的存储方法如果某个元素大于10那就全乱了一般请况下我们都是用数组进行存储大数操作而不是计算。就算是要计算的话还要给你提供每个元素都是小于10的数字用上边字符串的思路进行计算就可以了。 存储大数一般是通过数组保存运算后很大的数字。 例如求某数的阶乘 100的阶乘long long就已经受不了了那么如何进行精确计算呢 还是回忆小学时候我们如何计算乘法的呢  上边的字符串相加的题目中我们可以发现进位add只有两种0或者1因为就算两个9相加结果也还是18进位仍然是1在这里就不同了。  我们可以把99*99看做在数组中保存的两个9分别乘以99他们在数组中的位置表示他们的位数。  如果是求阶乘的话就是要将两个数字相乘之后的数字再乘以一个数而已同样的思路多了一层循环。  就像上边再乘以98的话就是数组中每一位的数字都乘以98然后重复上边的操作就可以了。在乘以下一个数之前要知道上一次乘完的结果的位数起始时可以将计算的第一个数字乘以1然后判断出位数再次运算时就使数组中每一位的数字乘以要乘以的数字。  例如100的阶乘让数组中首元素为1第一次运算完成之后数组中前三个元素就是001有三位数字位数为cout3。然后乘以99就是数组中前三个元素乘以99前两个数字不变最后的数字是大于10的在进位结束后判断数组下标为2一共3位数字最后一位下标为2的位置是否大于10如果大于就进位此时需要进位一个9同时位数cout加1当然这是一个循环如果最后一位乘的数不是99而是101就要进位两次第一次进位10第二次进位1当然位数就要加2。 有了上边的思路就可以写代码了 int main() {int num 0;scanf(%d, num);if (num 0){printf(1);}int a[10000] { 0 };a[0] 1;int cout 1;//分为三步处理for (int i num; i 0; i--){int j 0;//cout是位数将所有的位数都乘以i。for (; j cout; j){a[j] * i;}//将每个位判断一下如果大于等于10就向前进位for (int k 0; k cout; k){if (a[k] 10){a[k 1] a[k] / 10;a[k] a[k] % 10;}}//从最后一位进行判断找到新的位数for (int l cout; a[l] 0; l){cout;a[l 1] a[l] / 10;a[l] a[l] % 10;} }for (int i cout-1; i 0; i--)//从后向前遍历打印{printf(%d , a[i]);}return 0; }在循环结束时的cout就是结果的位数同是数组中存放的就是结果的逆序。我在里开的空间是10000如果计算出的数位数更大的话可以扩宽数组大小。  本文到这里就结束啦有用的话留一个赞再走叭如果你的慧眼金睛发现了问题一定要说哦我会虚心改正哒。
http://www.pierceye.com/news/611507/

相关文章:

  • 可以网上做单的网站创建全国文明城市的宗旨是什么
  • 北京诚信建设网站成都蓉城最新消息
  • 上市公司网站建设分析评价网页制作的视频教程
  • 网站营运费网站关键字优化工具
  • 上海企业网站建站中山一站式营销推广平台
  • 想做网站策划怎么做苏州seo关键词排名
  • 中小型企业电子商务网站建设seo优化推广公司
  • 网站开发类型什么意思网页制作与设计千年之恋代码
  • 怎么做公司的网站免费网站建设专业的公司
  • 适合这手机浏览器主页的网站wordpress本地上传服务器
  • 济南百度网站开发寮步镇做网站
  • 营销类型的公司网站专注高密做网站哪家好
  • 公司网站建设找谁做网络渠道
  • 网站建设公司 校园网站html5商城网站
  • 自学it做网站厦门网站推广¥做下拉去118cr
  • 汕头市做网站优化国内时事新闻
  • 网站文章来源seowordpress 搜索 分词
  • 网站建设和网络推广微信开发品牌
  • 湛江网站关键词优化百度推广优化技巧
  • 做盗版网站会怎样网页设计规范2018
  • 做个中英文网站多少钱网页设计图片作品
  • iis7 添加php网站网站为什么需要空间
  • 网站到首页排名h5怎么制作的
  • 网站制作教程 pdf下载培训网站制作网站
  • 网站开发文档范例国外服务器租用价格表
  • 六安网站制作费用怎么做百度提交入口网站
  • centos7做网站做pc端网站讯息
  • 驻马店建设网站安徽全过程网站搭建案例
  • 企业网站推广费用wordpress相册汉化版
  • 怎么做正规网站广告网站设计怎么样