#include<iostream>
using namespace std;
int main()
{
int n,result;
unsigned int a,b;
while(cin>>a>>b>>n){
result=a/b;
cout << result << '.';
a=a%b;
for (int counterN=0 ; counterN<n ; counterN++){
a=a*10;
result=a/b;
cout << result;
a=a%b;
}
cout << "\n";
}
return 0;
}
------------------------------------------------------------------------------
把除法的範圍加大就可以加快速度
至於有沒有更快的方法目前沒有想出來
#include<iostream>
using namespace std;
const int DotSize=9;
//判斷數字是幾位數
int checkInt_Length(int n){
int counter=0;
while(n>0){
n/=10;
counter++;
}
return counter;
}
int main()
{
int n,result;
unsigned long long a,b;
while(cin>>a>>b>>n){
result=a/b;
cout << result << '.';
a=a%b;
//利用n來判斷何時結束
while(n>0){
//分解,最多補9個0
int temp = (n<=DotSize) ? n:DotSize;
//補位,注意a不為0,否則數字一樣
for (int i=0 ; i<temp&&a!=0 ; i++){
a*=10;
}
if (a>b){
//除法
result = a/b;
//計算長度
int len=temp-checkInt_Length(result);
//補0
for (int i=0 ; i<len ; i++){
cout << '0';
}
//結果輸出
cout << result;
a=a%b;
}
else{
//直接補零
for (int j=0 ; j<temp ; j++){
cout << '0';
}
}
//扣掉
n-=temp;
}
cout << "\n";
}
return 0;
}