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

Обсуждение задачи 1023. Пуговицы

i've got AC by this program(inside) but it take 3 sec .Can anybody give me some hint to solve it in 0.02 sec
Послано TheBlaNK 1 мар 2002 18:17
#include <stdio.h>
int main()
{
 long n,limit,i;
 scanf("%ld",&n);
 limit=n/2;
  for(i=3;i<=limit;i++)
   if(n%i==0) { n=i; break; }
 printf("%ld",n-1);
 return 0;
}
By Maths, you only need to check to the square root of limit(-)
Послано Miguel Angel 3 мар 2002 04:22
> #include <stdio.h>
> int main()
> {
>  long n,limit,i;
>  scanf("%ld",&n);
>  limit=n/2;
>   for(i=3;i<=limit;i++)
>    if(n%i==0) { n=i; break; }
>  printf("%ld",n-1);
>  return 0;
> }
but if n=2*(prime number) eg. n=26 and another case
Послано TheBlaNK 3 мар 2002 20:36
> > #include <stdio.h>
> > int main()
> > {
> >  long n,limit,i;
> >  scanf("%ld",&n);
> >  limit=n/2;
> >   for(i=3;i<=limit;i++)
> >    if(n%i==0) { n=i; break; }
> >  printf("%ld",n-1);
> >  return 0;
> > }
So, two special cases arise :) (-)
Послано Miguel Angel 4 мар 2002 13:00
> > > #include <stdio.h>
> > > int main()
> > > {
> > >  long n,limit,i;
> > >  scanf("%ld",&n);
> > >  limit=n/2;
> > >   for(i=3;i<=limit;i++)
> > >    if(n%i==0) { n=i; break; }
> > >  printf("%ld",n-1);
> > >  return 0;
> > > }
Thank you very much for ur help :-D
Послано TheBlaNK 7 мар 2002 00:54
> > > > #include <stdio.h>
> > > > int main()
> > > > {
> > > >  long n,limit,i;
> > > >  scanf("%ld",&n);
> > > >  limit=n/2;
> > > >   for(i=3;i<=limit;i++)
> > > >    if(n%i==0) { n=i; break; }
> > > >  printf("%ld",n-1);
> > > >  return 0;
> > > > }