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

Обсуждение задачи 1224. Спираль

My Solution Here:
Послано Destiny 13 ноя 2002 17:22
program spiral;
var
 n,m,r:real;
begin
 readln(n,m);
 if m>=n then
  begin
   if n=1.0 then
    r:=0.0
   else
    if n=2.0 then
     r:=2.0
   else
    if frac(n/2)<>0 then
     r:=4.0*trunc(n/2)
   else
    r:=2.0*(n-1);
  end
 else
  begin
   if m=1.0 then
    r:=1.0
   else
    if m=2.0 then
     r:=3.0
   else
    if frac(m/2)<>0 then
     r:=4.0*trunc(m/2)+1.0
   else
    r:=2.0*m-1.0;
 end;
 writeln(r:0:0);
end.
Here is my problem.I think it is better than you
Послано Arsenal 13 ноя 2002 18:39
const{only 49K)
 maxn=11;

var
 a:array[0..maxn]of 0..9;
 n,m:longint;
 i,j,s:integer;
 ok:boolean;

begin
 fillchar(a,sizeof(a),0);
 readln(n,m);
 ok:=false;
 if n>m then begin n:=m;ok:=true;end;
 n:=n-1;
 i:=maxn+1;
 while n<>0 do
  begin
   i:=i-1;
   a[i]:=n mod 10;
   n:=n div 10;
  end;
 if ok then j:=1 else j:=0;
 for i:=maxn downto 1 do
  begin
   s:=a[i]*2+j;
   a[i]:=s mod 10;
   j:=s div 10;
  end;
 i:=0;
 while (a[i]=0)and(i<>maxn) do i:=i+1;
 for j:=i to maxn do write(a[j]);
end.
just so so ...
Послано Coldfeel 21 ноя 2002 07:28
var m,n,y:real;b:boolean;
begin
 readln(m,n);
 b:=false;
 if m>n then begin y:=m;m:=n;n:=y;b:=true end;
 if m=0 then begin writeln(0);halt;end;
 if frac(m/2)<>0 then y:=int(m/2)*4
  else y:=int((m-1)/2)*4+2;
 if b then writeln(y+1:0:0) else writeln(y:0:0);
end.
i think mine is better/cleaner
Послано Stefan Ciobaca 24 ноя 2002 23:25
#include <stdio.h>
#include <math.h>

int main(void)
{
    unsigned int n, m, answer;

    scanf("%u %u", &n, &m);
    if (m >= n)
        answer = 2 * (n - 1);
    else
        answer = 2 * (m - 1) + 1;
    printf("%u\n", answer);

    return 0;
}
Re: i think mine is better/cleaner
Послано d340960 12 ноя 2008 20:37
Ok, same solution after some thinking. And it is working, just remember about huge numbers you are getting in the input

#include <iostream>
using namespace std;

int main()
{
    long long nN, nM;
    cin >> nN >> nM;
    if(nM >= nN) cout << 2*(nN-1);
    else cout << 2*(nM-1)+1;
    return 0;
}

Edited by author 12.11.2008 20:43

Edited by author 12.11.2008 20:44
Re: i think mine is better/cleaner
Послано isliguezze(TNU) 17 мар 2009 22:15
Shortest sol (C language):

main() {
  unsigned n, m;
  scanf("%u%u", &n, &m);
  printf("%u", n <= m ? 2 * n - 2 : 2 * m - 1);
}
Re: i think mine is better/cleaner
Послано MissYouAn 25 мар 2009 07:58
#include <iostream>
using namespace std;
long long n,m;

int main()
  {
    cin>>n>>m;
    if (m>=n) cout<<2*(n-1);
         else cout<<2*(m-1)+1;
  }
Re: My Solution Here:
Послано Rabidstorm 26 мар 2009 11:56
My Solution
program Ural1224;

var
  n,m:int64;

begin
  readln(n,m);
  if n<=m then writeln(n shl 1-2)
  else writeln(m shl 1-1);
end.
Java solution
Послано Rolex01 27 авг 2013 23:04
import java.io.*;
import java.util.*;

public class www {
    public static void main(String[] args) throws IOException{
        PrintWriter out = new PrintWriter(System.out);
        Scanner in = new Scanner(System.in);
        long n = in.nextInt();
        long m = in.nextInt();
        out.println(m>=n ? 2*n-2 : 2*m-1);
        in.close();
        out.close();
    }
}

Edited by author 27.08.2013 23:07
yoshsilarda..
Послано Ahror 11 ноя 2013 13:42
ee  munaqa bo'mag'ur  masalaga  bosh  qotirish  shartmi?