递归解法:
#include <iostream> #include <cstdio> #include <cmath> using namespace std; int m, n; double f(int k) { if(k == 1) return n; return sqrt(f(k - 1)); } int main() { while(~scanf("%d %d", &n, &m)) { double sum = 0; for(int i = 1; i <= m; ++ i) { sum += f(i); } printf("%.2f ", sum); } return 0; }
循环解法:
#include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() { int m; double n; while(~scanf("%lf %d", &n, &m)) { double sum = n, a = n; for(int i = m; i > 1; -- i) { a = sqrt(a); sum += a; } printf("%.2f ", sum); } return 0; }