藍橋杯 歷屆試題 小數第n位

2021-10-20 03:34:18 字數 1100 閱讀 6096

我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。

如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。

本題的任務是:在上面的約定下,求整數除法小數點後的第n位開始的3位數。

一行三個整數:a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置(0一行3位數字,表示:a除以b,小數後第n位開始的3位數字。

樣例輸入1

1 8 1

樣例輸出1

樣例輸入2

1 8 3

樣例輸出2

樣例輸入3

282866 999000 6

樣例輸出3

為了輸出除法的每一位,需要做一下遞推,假設被除數和除數分別是a和b,則a/b是他們的整數部分,之後令a = (a%b)*10,可得到下乙個小數字的被除數,a/b為該位的小數字,依次類推。

開乙個map,記錄每次的被除數及其位置,如果要記錄的被除數已經存在,則可判斷這是乙個無限迴圈小數。記錄無限迴圈小數時可使用start記錄迴圈開始位置,len記錄乙個迴圈的長度,當位置index大於等於start時,index位置的小數字等於start+(index-start)%len位置的小數字。

#include#include#includeusing namespace std;

//開始迴圈的位置,迴圈長度,當前位置

int start = -1,len = -1,count = 1;

long long a,b,n;

mapachieved;

vectornumbers;

int main()

achieved[a] = count++;

temp = a/b;

numbers.push_back(temp);

a = (a%b)*10;

} //有限小數

if(start == -1)

}else

} return 0;

}

歷屆試題 小數第n位 藍橋杯

問題描述 我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。本題的任務是 在上面的約定下,求整數除法小數點後的第n位開始的3位數。輸入格式 一行三個整數 a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置 0...

藍橋杯 歷屆試題 小數第n位

我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。本題的任務是 在上面的約定下,求整數除法小數點後的第n位開始的3位數。輸入格式 一行三個整數 a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置 0輸出格式 ...

藍橋杯 歷屆試題 小數第n位

問題描述 我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。本題的任務是 在上面的約定下,求整數除法小數點後的第n位開始的3位數。輸入格式 一行三個整數 a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置 0...