高精度計算 除法 高精除以低精


  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()函數的返回值為一個數字


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM