題目描述:ios
數列的第一項爲n,之後各項爲前一項的平方根,求數列的前m項的和。函數
輸入描述:測試
輸入數據有多組,每組佔一行,由兩個整數n(n < 10000)和m(m < 1000)組成,n和m的含義如前所述。spa
輸出描述:code
對於每組輸入數據,輸出該數列的和,每一個測試實例佔一行,要求精度保留2位小數。blog
這裏涉及到一個輸出精度的控制,咱們知道在這C語言中,控制輸出精度能夠直接用如下代碼。ci
printf("%.2lf\n",sum);
在C++中輸出控制精度須要用到std::ios_base::precison,即std::cout.precison()。這個函數是用來控制輸出的有效位,以下所示io
double n = 0.001010; cout.precision(4); cout << n << endl;
這個的輸出結果就是0.00101。從第一個1開始爲第一個有效位,連續輸出4個有效位,最後一位的0被省略。這並無達到咱們要設置小數點後位數的要求,因此在查閱了資料後發現結合std::fixed使用能夠控制小數點後的位數,使用方法以下:class
double n = 0.001010; cout.precision(4); cout << fixed << n << endl;
這個的輸出結果就是0.0010。方法
須要注意的是 cout.precision(4); 後cout的精度一直都是4個有效位,若設置了fixed,就一直控制小數點後的位數。目前尚未消除precision的方法,只能從新設置成新的有效位,可是針對fixed但是經過cout.unsetf( ios::fixed );來消除。