func_code_string: #include <bits/stdc++.h>   using namespace std;   struct pt {     double x, y;     pt(const double &_x = 0.0, const double &_y = 0.0) : x(_x), y(_y) {}   };   pt operator+(const pt &a, const pt &b) { return pt(a.x + b.x, a.y + b.y); }   int n, m, id[102][5];   pt verts[500], radius, pent[2][5], centre;   const double PI = 3.141592653589793L;   const double D2R = PI / 180.0L;   inline int vertid(const int &i, const int &j) { return id[i][j] + 1; }   inline int addvert(const pt &p) {     verts[m] = p;     return m++;   }   int main() {     scanf( %d , &n);     double radius = 10.0L * sinl(54.0L * D2R) / sinl(72.0L * D2R);     for (int i = 0; i < (5); ++i) {       double theta = i * 2.0L * 3.141592653589793L / 5.0L;       pent[0][i].x = radius * cosl(theta);       pent[0][i].y = radius * sinl(theta);       pent[1][i].x = -pent[0][i].x;       pent[1][i].y = pent[0][i].y;     }     memset(id, -1, sizeof id);     for (int i = 0; i < (n); ++i) {       bool odd = i & 1;       if (i) centre = centre + pent[!odd][0] + pent[!odd][1];       for (int j = 0; j < (5); ++j)         if (id[i][j] == -1) {           id[i][j] = addvert(centre + pent[odd][j]);           if (j == 0) id[i + 1][4] = id[i][j];           if (j == 1) id[i + 1][0] = id[i + 2][4] = id[i][j];         }     }     printf( %d n , m);     for (int i = 0; i < (m); ++i)       printf( %.15lf %.15lf n , verts[i].x, verts[i].y);     for (int i = 0; i < (n); ++i)       for (int j = 0; j < (5); ++j)         printf( %d%c , vertid(i, j), (j < 4) ?     :   n );     printf( %d , vertid(0, 4));     for (int i = 0; i < (n); ++i)       printf(  %d %d %d , vertid(i, 1), vertid(i, 3), vertid(i, 0));     for (int i = (n)-1; i >= 0; --i) printf(  %d %d , vertid(i, 2), vertid(i, 4));     printf(  n );     return 0;   }   