ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1017. Лестницы

"Crash ACCESS_VIOLATION"
Послано GoGo 9 июл 2001 20:14
this is my source
#include <stdio.h>

char x[2][500][30];
int n,cur=1,sec=0;

void read_data()
 {
  scanf("%d",&n);
 }

void init(char a[30],int val)
 {
  a[0]=0;
  while(val)
   {
    a[++a[0]]=val%10;
    val/=10;
   }
 }

void eqal(char a[30],char b[30])
 {
  int i;
  b[0]=a[0];
  for(i=1;i<=b[0];i++)
   b[i]=a[i];
 }

void sum(char a[30],char b[30])
 {
  int i,t=0;
  if(b[0]>a[0])
   {
    for(i=a[0]+1;i<=b[0];i++)
     a[i]=0;
    a[0]=b[0];
   }
  else
   {
    for(i=b[0]+1;i<=a[0];i++)
     b[i]=0;
    b[0]=a[0];
   }
  for(i=1;i<=b[0];i++)
   {
    b[i]+=a[i]+t;
    t=b[i]/10;
    b[i]%=10;
   }
  if(t)b[++b[0]]=t;
 }

void solve()
 {
  int i,k;
  init(x[0][0],1);
  init(x[0][1],1);
  for(i=2;i<=n;i++)
   init(x[0][i],0);

  for(k=2;k<n;k++)
   {
    for(i=0;i<=n;i++)
     if(i<k)eqal(x[sec][i],x[cur][i]);
     else
      {
       eqal(x[sec][i-k],x[cur][i]);
       sum(x[sec][i],x[cur][i]);
      }
    cur=!cur;
    sec=!sec;
   }
 }

void afiseaza()
 {
  int i;
  for(i=x[sec][n][0];i>0;i--)
   printf("%d",x[sec][n][i]);
 }

void main()
 {
  read_data();
  solve();
  afiseaza();
 }

I got "Crash ACCESS_VIOLATION"