1. 程式人生 > >歷屆試題 小數第n位(小技巧)

歷屆試題 小數第n位(小技巧)

() lag div -s ace 歷屆試題 技巧 space turn

問題描述   我們知道,整數做除法時,有時得到有限小數,有時得到無限循環小數。
  如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。
  本題的任務是:在上面的約定下,求整數除法小數點後的第n位開始的3位數。 輸入格式   一行三個整數:a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置(0<a,b,n<1000000000) 輸出格式   一行3位數字,表示:a除以b,小數後第n位開始的3位數字。 樣例輸入 1 8 1 樣例輸出 125 樣例輸入 1 8 3 樣例輸出 500 樣例輸入 282866 999000 6 樣例輸出 914
#include <stdio.h>
#include 
<iostream> #include <algorithm> using namespace std; long long a,b,n; int main(){ scanf("%I64d %I64d %I64d", &a, &b, &n); long long t = a % b; if(t == 0){ cout<<"000"; return 0; } int count = 0; int flag = 0; while(--n){
if(t == 0) break; t = t * 10; t = t % b; count++; if(t == a % b) n = n % count; } if(!t) cout<<"000"; else{ t = t * 10; cout<< t / b; t = t % b; t = t * 10; cout
<< t / b; t = t % b; t = t * 10; cout<< t / b; } return 0; }

歷屆試題 小數第n位(小技巧)