Cod sursa(job #157860)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 13 martie 2008 12:23:29
Problema Lampa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>
#include <string.h>
#define MAX 3040010

char a[MAX];
char gen1[30],gen2[30],final[30];
int fib[20];
int n,m,na,nb;

void genfib(int n){
	int i;
	fib[0]=1;
	fib[1]=1;
	for(i=2;i<=n;i++)
		fib[i]=fib[i-1]+fib[i-2];
}


int adevar(int na,int nb)
{
  int ok=0;
   for (int p=0;p<nb;p++)
      if (a[m-p-1]==a[m-p-1-na-nb] && a[m-p-1]==a[m-p-1-na-nb-nb])
	 ok=1;
      else
	 return 0;
   for (int i=0;i<na;i++)
      if (a[m-nb-1]==a[m-nb-na-nb-nb-1])
	 ok=1;
      else
	return 0;
   return 1;
}

void aflare()
{
  double lga=0,lgb=0;
   for (lgb=m/nb;lgb>0;lgb--)
   {
      if ((int)(m-lgb*nb)/na==(double)(m-lgb*nb)/na)
	 if (adevar((m-lgb*nb)/na,lgb))
	 {
	    for (int i=m-lgb-((m-lgb*nb)/na);i<m-lgb;i++)
	       printf("%c",a[i]);
	    printf("\n");
	    for (int j=m-lgb;j<m;j++)
	      printf("%c",a[j]);
	    printf("\n");
	    return;
	 }
   }
   printf("0\n");
}

int main ()
{
  freopen("lampa.in","r",stdin);
  freopen("lampa.out","w",stdout);
  scanf("%d%d\n",&n,&m);
  gets(a);
  genfib(n);
  na=fib[n-3];
  nb=fib[n-2];
  aflare();
  fclose(stdout);
  return 0;
}