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

Общий форум

1133. Is there anybody help me???... I did it but wa3.
Послано Fibo 21 июн 2010 00:16
#include <cstdlib>
#include <iostream>

using namespace std;
    int bas = -2000000001;
    int son = 2000000001;
int i,n,j,y,t;
int Fi, Fj, Fn;
int Fibo(int m);
int main(int argc, char *argv[])
{   int h=0;
    cin >> i >> Fi >> j >> Fj >> n;

    if(i > j){swap(i,j); swap(Fi,Fj);}
    t=abs(n);y=abs(i);
    if(n<i && n<0){n=0; i=i+t; j=j+t;}
   else if(i<0 && i<n) { i=0; n=n+y; j=j+y;}

   // cout << i << " " << j <<" " << n;
    int bas = -2000000001;
    int son = 2000000001;
    int m;
if(j==i+1) {h=1;m=Fj;}
   else{

    while(bas <=son)
    {
         m =(bas +son)/2;
        if(Fibo(m)==Fj)
            {  break;}
        else if(Fibo(m)>Fj){
        son= m;}
        else {bas = m ;}
    }

    }

    if(n>i){
   for(int e=i+1;e<n;e++){
   Fn = Fi + m;
   Fi = m;
   m=Fn;}cout << Fn;}
   else if(n==i) cout << Fi;
   else if(n==j) cout << Fj;
   else if(n < i)
   {
     for(int e=n+1;e<=i;e++){
   Fn = m-Fi;
   m = Fi;
   Fi = Fn;

   }
   cout << Fn;
   }
 return 0;
}

int Fibo(int m)
{
    int r=m;
    int fk;
    fk=Fi;
    int ans=0;
    for(int k=i+1; k<j; k++)
    {ans =  fk +r;
    fk=r;
    r=ans;}
    return ans;
}