¿Alguien puede ayudarme a escribir un subprograma de feliz cumpleaños usando lenguaje C? Después de ingresar el cumpleaños, la imagen del pastel de cumpleaños aparecerá al final.
#include
#include
#include
usando el espacio de nombres std;
const int inf=0xffffffff ;
int preminv[21] ;
int ri[21],hi[21] ;
int total ,floornum ;
int ans ;
int dfs (int n,int v,int s,int maxr,int maxh)
{
int res ;
int i,tmpr,tmph,tmpsum ;
if (n>floornum){
if (v==total && s+ri[1]*ri[1] ans = s+ri[1]*ri[1] ; devuelve 1 ; } } for (ri[n]=maxr-1; ri[n]>=floornum-n+1; ri[n]--){ res = 2.0*(total-v)/ri[n] + ri[1]*ri[1] ; if (res + s >= ans) continuar ; for (hi[n]=maxh-1; hola[n]>=floornum-n+1; hola[n]--){ if (v+ri [n]*ri[n]*hi[n]+preminv[floornum-n]>total) continuar; tmpr = ri[n],tmph = hola[n],tmpsum = 0; for (i=n ; i<=floornum ; i++){ tmpsum += tmpr*tmpr*tmph ; tmpr-- , tmph- - ; } si (v+tmpsum dfs(n+1,v+ri[n]*ri[n ]*hola[n],s+2*ri[n]*hola[n],ri[n],hola[n]) ; } } p> return 1 ; } int main() { int tmpv,tmpr,tmph ; int i ; tmpv=0 ; for (i=1 ; i<21 ; i++){ tmpv += i*i*i ; p> p> preminv[i] = tmpv ; } while (scanf("%d%d",&total,&floornum)!=EOF){ ans = inf ; tmpv = total - preminv[floornum-1] ; if (tmpv>0){ tmpr = sqrt (1.0*tmpv/floornum) + 1 ; tmph = 1.0*tmpv/(floornum*floornum) + 1 ; dfs(1,0,0,tmpr, tmph) ; } if (ans==inf){ ans = 0 ; } printf("%d\n",ans) ; } devuelve 0; }