大數記錄之,大數乘整型數nyoj832

2021-09-08 17:00:21 字數 1011 閱讀 5267

想到了乙個題目:對決二

但是發現有一道題目是相似的:

但是答案是不一樣的、我的**交到戰鬥力題目上會wa....終於找到答案了,是求大數的**有漏洞。

求大數的**:剛開始沒有加k=0,找好久錯誤。

int cheng(int x,int p)

}return t;

}

別人的:

int cheng(int x,int p)//大數乘小數

return t;

}

不加字元長度的:

int multiply(int x)//大數乘小數 

}

題意都是吧乙個數n分成多個數的和,讓多個數的和的乘積最大!

後來發現我的思路跟那道題目不一樣,我的思路是,判斷能分成3盡量分成3,分不了3的分成2。比如6分成2的話為2+2+2,乘積為2^3=8,而分成3的話為3+3,乘積為3*3=9;

所以我先判斷是不是奇數,是奇數的話先分成乙個3,即n-3,變成偶數,然後在判斷大於6的話,ans*=9;n-=6;不大於6的話是否大於4,大於四的話ans*=4;n-=4;然後大於2的情況也一樣,直到為0.

果然思路是對的,是乘法搞錯了。在好好看看、**:

#include #include int s[100000];

int cheng(int x,int p)//大數乘小數

return t;

}/*int cheng(int x,int p)

}return t;

}*/int main()

else

while(n>0)

else if(n>=4)

else}}

for(int i=p-1;i>=0;i--)

printf("%d",s[i]);

printf("\n");

}return 0;

}

高精度之大數乘大數

現在我們來說一下大數乘以大數。大數乘以大數也是用來模擬手算。舉個例子吧!先從個位開始乙個乙個的乘 乘完個位然後再乘十位,乘十位的時候要和個位的想成的結果相加。這裡注意乘十位的時候 就不要和乘個位數字的結果中的最後一位相加了 就是如圖搓位。就是這樣 下面先貼上我的 include includeusi...

NYOJ 28 大數階乘

題意 對於比較小的n,求其階乘的時候可以用遞迴解決。但是如果n很大的時候,比如1000,那麼n 肯定超出整形資料所能表示的範圍。因此必須採用其它方法解決,通常解決大數運算資料超出範圍的問題時採用陣列去模擬。其實求算n 可以看成是每次兩個整數相乘的過程,因此可以模擬成大數相乘的過程。只是需要增加一些變...

nyoj 28 大數階乘

就是個簡單的高精度,只是一開始我打表超記憶體了,然後用了各種技巧硬是把記憶體縮到了題目要求以下 5w kb 感覺挺爽的,如下 1 include2 include3 include4 include5 using namespace std 6 typedef long long ll 7 cons...