模擬豎式除法

2021-10-02 13:49:56 字數 1115 閱讀 6690

應用:用於乙個被除數可能超過資料型別的範圍,有規律的被除數用式子來解決,沒有規律,可以儲存在char型別中,然後乙個個取出來

思路:故採用模擬豎式除法的方式求出商的各個位並輸出。顯然,除數為x,被除數一開始需要在末位不斷添1直到被除數不小於除數,才開始求商。求出第乙個商後求餘數,若餘數為0說明運算結束,否則在餘數末位添1,重複上述求商過程。

注:開始時被除數不能小於除數,其實就是數學的豎立除法,開始被除數小於除數,之後拿下被除數的下一位,直到無結束,除數不能超過資料型別的範圍

例題:l1-046 整除光棍 (20分)

這裡所謂的「光棍」,並不是指單身汪啦~ 說的是全部由1組成的數字,比如1、11、111、1111等。傳說任何乙個光棍都能被乙個不以5結尾的奇數整除。比如,111111就可以被13整除。 現在,你的程式要讀入乙個整數x,這個整數一定是奇數並且不以5結尾。然後,經過計算,輸出兩個數字:第乙個數字s,表示x乘以s是乙個光棍,第二個數字n是這個光棍的位數。這樣的解當然不是唯一的,題目要求你輸出最小的解。

輸入格式:

輸入在一行中給出乙個不以5結尾的正奇數x(<1000)。

輸出格式:

在一行中輸出相應的最小的s和n,其間以1個空格分隔。

輸入樣例:

31輸出樣例:

3584229390681 15

思路:經嘗試,逐漸增加光棍的位數確實會有超時。然後看了網上的一些解法,才知道還有這種操作:模擬豎式除法。和普通的豎式除法不同的是,它要在餘數後面加上一,這樣除出來的結果才相當於是在被除數後面加了一。以求13對應的光棍數為例,得先找到乙個比13大的數,然後做這樣的除法,算出來一位輸出一位,如下圖:

}擴充套件:

以後多利用模擬手算的方法

N分之一 豎式除法模擬

description alice越來越痴迷於數學問題了。一天,爸爸出了個數學題想難倒她,讓她求1 n。可憐的alice只有一歲零九個月,回答不上來 於是她求你編個程式幫她算出來。input 第一行是乙個整數t,表示測試組數。接下來t行,每行乙個整數 n 1 n 105 output 以實數形式輸出...

L1 046 整除光棍(模擬豎式計算除法)

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 翁愷 這裡所謂的 光棍 並不是指單身汪啦 說的是全部由1組成的數字,比如1 11 111 1111等。傳說任何乙個光棍都能被乙個不以5結尾的奇數整除。比如,111111就可以被13整除。現...

圓周率 (豎式除法,保留小數字數)

3 參考 計算機大牛們都在拼演算法,計算圓周率小數點後面的第n位。這涉及到許多除法,現在給你乙個被除數和除數,請你計算小數點後n位的值。輸入描述 輸入包含多組資料。每組資料報含三個正整數 被除數a和除數b 1 a輸出描述 對應每組資料,輸出a b的結果,小數後面保留n位 不到n位的補零 輸入例子 1...