天天看點

用html寫除法豎式代碼,模拟豎式除法

Description

設有下列的算式:

8 0 9

-----------

口口)   口口口口

口口

-----------

口口口

口口口

-----------

1

求出□中的數字,并列印出完整的算式來。

Input

無輸入

Output

輸出共五行,每行對應圖中算式從上到下從左到右的一個數。

Sample Input 1

Sample Output 1

具體來說:

輸出的第一行對應圖中算式中左上角的那個未知的兩位數;

輸出的第二行對應圖中的那個未知的四位數;

輸出的第三行對應圖中的另外一個未知的兩位數;

輸出的第四行對應圖中的位置靠上的那個未知的三位數;

輸出的第五行對應圖中的位置靠下的那個未知的三位數。

大概長這個樣子

11

1111

11

111

111

解析:這實際上就是國小剛學除法時,學習的豎式除法,我們隻需要模拟一遍即可

思路:1)觀察被除數有四位數代碼中的a[count1],除數有兩位數,即代碼中的b[count1],是以我們隻需用兩個for循環枚舉一遍即可;

2)模拟豎式除法:

(1)除數×8得到第一虛線和第二虛線的數 ,即下面代碼中的b【count1】*8且它滿足兩位數,即小于100;

(2)取出a中的千位和百位,隻需a[count1]/100 設為tmp1即可,再減去b[count1]*8得到第二虛線和第三虛線中的第一行的第一個數,接着湊出第一行的數,即(a/100-b[count1]*8)*100    +  a[count1]-tmp1*100;),

(3)最後一行繼續模拟即可,假設    tmp2 = a[count1]-tmp1*100;   則利用最後的那個餘數1 ,得到((tmp2+(tmp1-b[count1]*8)*100)-b[count1]*9==1);

(4)最後記得最後兩行都滿足大于100即可;

總之就是模拟一遍即可!

代碼如下:

#include

using namespace std;

int a[100000];

int b[100000];

int tmp1 = 0,tmp2 = 0;

int count1 = 0;

int main()

{

for(int i = 1000;i <= 9999 ;i++)

{

for(int j = 10 ;j <= 99;j++)

{

if((i/j==809)&&(i%j==1))

{

a[count1] = i;

b[count1] = j;

tmp1 = a[count1]/100;

tmp2 = a[count1]-tmp1*100;

if(b[count1]*8<100&&(tmp1-b[count1]*8<10)&&((tmp2+(tmp1-b[count1]*8)*100)-b[count1]*9==1)&&(tmp2+(tmp1-b[count1]*8)*100)>100&&(b[count1]*9)>100)

{

cout<

cout<

cout<

cout<

cout<

}

}

}

}

return 0;

}

标簽:int,豎式,算式,圖中,count1,100,除法,tmp1,模拟

來源: https://www.cnblogs.com/yewanting/p/10533610.html