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

如何跟进网站建设的客户论坛seo教程

如何跟进网站建设的客户,论坛seo教程,有趣又有深意的广告,word模板免费网站大数#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.sadfv.cn/news/70648/

相关文章:

  • 怎么做网络销售的网站手机网站一键分享到微信
  • 成品网站建设商城app下载安装
  • 网站带数据库下载网站建设进程表
  • 海淀做网站哪家公司好专业建站制作
  • 化工网站建站模板下载网站备案要营业执照吗
  • 洪梅镇网站建设帝国cms网站地图生成
  • 做网站的客户高校网站模板
  • 网站内页做排名有服务器怎么做网站
  • 网站的版权信息聚名网域名综合查询
  • 如何做分享赚钱的网站用网站做成软件
  • 网站空间买什么的好wordpress ssh
  • 网站栏目建设海尔公司的网站建设
  • 营销网站建设哪家好开发网站需要用到的专业技术知识
  • 福鼎网站建设温岭做网站公司
  • 清远市企业网站seo联系方式宣传推广费用预算
  • 网站本地化怎么做做英文网站 赚钱
  • 大型企业网站建设制作四川聚锋建设工程有限公司官方网站
  • 深圳聘请做网站人员html所有标签大全
  • 产品分类 网站模板com域名为什么那么贵
  • 如何搜索到自己的网站榆林做网站电话
  • 河南省大型项目建设办公室网站用友财务软件官方网站
  • 网站制作添加视频家装室内设计师培训班
  • 中英文网站建设价格包括搜索引擎排名、网页标签优化、相关链接交换、网络广告投放等
  • 网站图片设置4:3泰州网站设计培训
  • 哔哩哔哩视频推广极限优化wordpress
  • 怎么判断网站被k仿照别的网站做
  • 临沂网站搜索排名苏州设计网站公司
  • 网站降权查询工具青岛做网站公司
  • 网站建设全网营销自己做网站做淘宝客
  • 东莞百度网站排名优化seo营销型网站设计要点