zoukankan      html  css  js  c++  java
  • 高精度计算 除法 高精除以低精

    1. 高精度就是很长很长的数字
    2. 低精就是可以直接存在基本类型(int short double...)的数字
    3. 两个正整数,一个是高精度,一个是低精度,求整除部分,不求余数。//其实就算要负数也很好解决
    4. //两个正整数,高精度除以低精度,只求整除部分,不求余数 
      #include<iostream>
      #include<stdio.h>
      #include<string.h>
      using namespace std;
      int main()
      {
          char a1[100];
          int a[100],ans[100],lena,rm=0,lenans,b;    //高精a除以低精b 
          memset(a,0,sizeof(a));
          memset(ans,0,sizeof(ans));
          gets(a1);
          cin>>b;
          //!lena=a1.strlen();这样的写法是错误的,区别stirng类的s.length()和char[]的strlen(char[]); 
          lena=strlen(a1);
          for(int i=1;i<=lena;i++)        //顺序 
          {
              a[i]=a1[i-1]-48;
           } 
          for(int i=1;i<=lena;i++)
          {
              ans[i]=(rm*10+a[i])/b;    //注意这里是都是对第i位操作 
              rm=(rm*10+a[i])%b;        //每次算的余数都是这个rm,直接用"%"符号就可以了 
          }
          lenans=1;
          while(ans[lenans]==0&&lenans!=lena)
          {
              lenans++;
          }
          for(int i=lenans;i<=lena;i++)        //通过控制输出来删除前导 ,因为很难删除数组的元素,数组不像动态链表那样用delete 
          {
              cout<<ans[i];
          }
          cout<<endl;
      }
    5. %--求余的好工具
    6. 区别
      1. string a;
        cin>>a;
        int lena;
        lena=s.length();
      2. char a[100];
        gets(a);
        int lena;
        lena=strlen(a);
      3. 注意一个是用“.”点来访问的,一个是调用strlen()函数,可以看出strlen()函数的返回值为一个数字
  • 相关阅读:
    VHD进阶:差分VHD备份系统
    默认系统为UEFI启动的GPT分区的WIN7(8),如何安装VHD的UEFI WIN8(7)
    在WIN7/8下把XP装入VHD (上)
    USB鼠标线序
    组合与继承
    结构体内存对齐
    多媒体编码与格式
    网络病毒
    寄存器
    0
  • 原文地址:https://www.cnblogs.com/xuwanwei/p/10817193.html
Copyright © 2011-2022 走看看