藍橋杯2023年第八屆 小數第n位 c

2021-09-22 02:01:16 字數 1241 閱讀 3036

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

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

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

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

1 8 1

用yu表示a每除以一次b得到的餘數,

當相同的餘數第二次出現的時候,此時的餘數除以b是第二個迴圈節的第一位。

數值為yu的餘數出現在小數點後第mp[yu]位,

用cnt表示計算到了第幾位。

yu的終值是迴圈節的第一位,

cnt的終值是第乙個迴圈節的最後一位(見**)。

以1/8為例:

消除重複的迴圈節,縮小n的值:

區間 ( mp[yu] , n ] 共有n-mp[yu]個元素,

迴圈節長度為 cnt-mp[yu]+1,

當n>mp[yu]時,n=mp[yu]+(n-mp[yu])%(cnt-mp[yu]+1);

#include

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

mapmp;

intmain()

if(n>mp[yu]

) n=mp[yu]

+(n-mp[yu])%

(cnt-mp[yu]+1

);yu=a%b;

//yu初始化

for(

int i=

1;i) yu*=10

;printf

("%lld"

,yu/b)

; yu%

=b; yu*=10

;printf

("%lld"

,yu/b)

; yu%

=b; yu*=10

;printf

("%lld\n"

,yu/b)

;return0;

}

2017第八屆藍橋杯 分巧克力

簡單二分 題目 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足 1.形狀是正方形,邊長是整數 2.大小相同 例如一塊...

2017 第八屆藍橋杯 魔方狀態

二階魔方就是只有2層的魔方,只由8個小塊組成。如圖p1.png所示。小明很淘氣,他只喜歡3種顏色,所有把家裡的二階魔方重新塗了顏色,如下 前面 橙色 右面 綠色 上面 黃色 左面 綠色 下面 橙色 後面 黃色 請你計算一下,這樣的魔方被打亂後,一共有多少種不同的狀態。如果兩個狀態經過魔方的整體旋轉後...

藍橋杯第八屆決賽

精神狀態不好的時候怎麼寫 真的哭了,一堆sb錯誤 對於16進製制,我們使用字母a f來表示10及以上的數字。如法炮製,一直用到字母z,就可以表示36進製。36進製中,a表示10,z表示35,aa表示370 你能算出 many 表示的數字用10進製表示是多少嗎?請提交乙個整數,不要填寫任何多餘的內容 ...