poniedziałek, 30 października 2017

00008 - 1016 - Prędkość średnia - ww.pl.spoj.com

Treść zadania:

Pociąg z miejscowości A do B jedzie z prędkością v1, a wraca
z miejscowości B do A z prędkością v2. Obliczyć średnią prędkość
na całej trasie. Uwaga: Dane wejściowe będą tak dobrane,
aby wynik był liczba całkowitą.

Wejście
Na wejściu znajduje się dokładnie jedna liczba całkowita
t (1<=t<=1000) oznaczająca liczbę zestawów danych. W wierszach
od 2 do t+1 znajdują się dwie liczby całkowite oddzielone
spacja v1 oraz v2 (1<=v1,v2<=10000).

Wyjście
Wyjście składa się z t wierszy. W każdym wierszu powinna
znaleźć się dokładnie jedna liczba całkowita oznaczająca
średnią prędkość.

Przykład

Wejście:
2
50 50
60 40

Wyjście:
50
48


Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t, V1, V2;
    scanf("%d", &t);
    while(t != 0)
    {
        scanf("%d %d",&V1,&V2);
        printf("%d\n",2*V1*V2/(V1+V2));
        --t;
    }
    return 0;
}


Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{
    int t, V1, V2;
    cin>>t;
    while(t != 0)
    {
        cin>>V1>>V2;
        cout<<2*V1*V2/(V1+V2)<<endl;
        --t;
    }
    return 0;
}


Źródło:
http://pl.spoj.com/problems/VSR/

środa, 25 października 2017

00007 - 606 - Tablice - www.pl.spoj.com

Treść zadania:

Odwróć kolejność elementów w tablicy.

Wejście
Najpierw liczba testów t (t ≤ 100). Następnie dla każdego
testu liczba n (n ≤ 100) i n liczb oddzielonych spacjami.

Wyjście
Dla każdego testu n liczb w porządku odwrotnym niż na wejściu.

Przykład

Wejście:
2
7 1 2 3 4 5 6 7
3 3 2 11

Wyjście:
7 6 5 4 3 2 1
11 2 3


Kod źródłowy w C++:
#include <iostream>
#include <vector>
#include <cstdio>

using namespace std;

int main()
{
int t, y, temp;
vector <int> numbers;
scanf("%d",&t);
for (int i=0; i<t; i++)
{
    scanf("%d",&y);
    for (int j=0; j<y; j++)
    {
        scanf("%d",&temp);
        numbers.push_back(temp);
    }
    for (int k=numbers.size()-1; k<=numbers.size(); k--)
    {
        printf("%d ",numbers[k]);
    }
    numbers.clear();
    puts("");
}
    return 0;
}


Kod źródłowy w Python 2:
a = int(raw_input(''))
for i in range(0, a, +1):
 s = result = ''
 l = []
 s = str(raw_input(''))
 l = s.split(' ')
 l3 = list(l)
 l3.remove(l3[0])
 l3.reverse()
 for j in range(0, len(l3), +1):
  if j < len(l3)-1:
   result += str(l3[j]) + " "
  else:
   result += str(l3[j])
 print result


Kod źródłowy w Python 3:
a = int(input(''))
for i in range(0, a, +1):
 s = result = ''
 l = []
 s = str(input(''))
 l = s.split(' ')
 l3 = list(l)
 l3.remove(l3[0])
 l3.reverse()
 for j in range(0, len(l3), +1):
  if j < len(l3)-1:
   result += str(l3[j]) + " "
  else:
   result += str(l3[j])
 print (result)


Źródło: http://pl.spoj.com/problems/PP0502B/

poniedziałek, 23 października 2017

00006 - 1502 - Samolot - www.pl.spoj.com

Treść zadania:


Bajtockie Linie Lotnicze wzbogaciły swoją flotę o nowy model samolotu.
W samolocie tym jest n1 rzędów miejsc siedzących w klasie biznesowej
oraz n2 rzędów w klasie ekonomicznej. W klasie biznesowej każdy rząd
ma k1 miejsc siedzących, a w klasie ekonomicznej — k2 miejsc.

Zadanie
Napisz program, który:
•wczyta informacje na temat dostępnych miejsc siedzących w samolocie,
•wyznaczy sumaryczną liczbę wszystkich miejsc siedzących,
•wypisze wynik

Wejście
W pierwszym i jedynym wierszu wejścia znajdują się cztery liczby
naturalne n1, k1, n2, i k2 (1<=n1,k1,n2,k2<=1000), pooddzielane
pojedynczymi odstępami.

Wyjście
Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczbę
całkowitą - liczbę miejsc siedzących w analizowanym samolocie.

Przykład

Wejście
2 5 3 20

Wyjście
70


Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n1, k1, n2, k2;
    scanf("%d %d %d %d",&n1,&k1,&n2,&k2);
    printf("%d",n1*k1+n2*k2);
    return 0;
}


Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{
    int n1, k1, n2, k2;
    cin>>n1>>k1>>n2>>k2;
    cout<<n1*k1+n2*k2<<endl;
    return 0;
}


Źródło:
http://pl.spoj.com/problems/POTSAM/

czwartek, 19 października 2017

00005 - 496 - Dwie cyfry silni - www.pl.spoj.com

Treść zadania:

Niech n będzie nieujemną liczbą całkowitą. Liczbę n! (czytaj n-silnia)
definiuje się następująco. Jeśli n ≤ 1, to n! = 1. Dla n > 1, n! jest
równe iloczynowi wszystkich liczb od 1 do n, czyli n! = 1 * 2 * ... * n.
Na przykład 4! = 1*2*3*4 = 24.

Zadanie
Napisz program, który:

• wczyta ze standardowego wejścia nieujemną liczbę całkowitą n,
• policzy cyfrę dziesiatek oraz cyfrę jedności w zapisie dziesiętnym liczby n!,
• wypisze wynik na standardowe wyjście.

Wejście
W pierwszej linii wejścia znajduje się jedna liczba całkowia D (1≤D≤30),
oznaczjąca liczbę przypadków do rozważenia. Opis każdego przypadku składa
się z jednej linii, w której znajduje się jedna nieujemna liczba
całkowita n (0 ≤ n ≤ 1 000 000 000).

Wyjście
Dla każdego przypadku z wejścia. Twój program powinien wypisać w osobnej
linii dokładnie dwie cyfry (oddzielone pojedynczą spacją): cyfrę dziesiątek
i cyfrę jedności liczby n! zapisanej w systemie dziesiętnym.

Przykład
Dla danych wejściowych:

2
1
4

poprawną odpowiedzią jest:

0 1
2 4


Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i=0,j=0;
    unsigned long long int a=0;
    scanf("%d",&i);
    for(j;j<i;++j)
    {
        scanf("%d",&a);
        switch(a)
        {
        case 0:
        case 1:
            printf("%d %d\n",0,1);
            break;
        case 2:
            printf("%d %d\n",0,2);
            break;
        case 3:
            printf("%d %d\n",0,6);
            break;
        case 4:
            printf("%d %d\n",2,4);
            break;
        case 7:
            printf("%d %d\n",4,0);
            break;
        case 5:
        case 6:
        case 8:
            printf("%d %d\n",2,0);
            break;
        case 9:
            printf("%d %d\n",8,0);
            break;
        default:
            printf("%d %d\n",0,0);
            break;
        }
    }
    return 0;
}


Kod źródłowy w C++:
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int i=0,j=0;
    unsigned long long int a=0;
    cin>>i;
    for(j;j<i;++j)
    {
        cin>>a;
        switch(a)
        {
        case 0:
        case 1:
            cout<<"0 1"<<endl;
            break;
        case 2:
            cout<<"0 2"<<endl;
            break;
        case 3:
            cout<<"0 6"<<endl;
            break;
        case 4:
            cout<<"2 4"<<endl;
            break;
        case 5:
        case 6:
        case 8:
            cout<<"2 0"<<endl;
            break;
        case 7:
            cout<<"4 0"<<endl;
            break;
        case 9:
            cout<<"8 0"<<endl;
            break;
        default:
            cout<<"0 0"<<endl;
            break;
        }
    }
    return 0;
}


Kod źródłowy w Python 2:
input = int(raw_input(''))
for i in range(0, input, +1):
    number = int(raw_input(''))
    if number == 1:
        print '0 1'
    elif number == 0:
        print '0 1'
    elif number == 2:
        print '0 2'
    elif number == 3:
        print '0 6'
    elif number == 4:
        print '2 4'
    elif number == 5:
        print '2 0'
    elif number == 6:
        print '2 0'
    elif number == 7:
        print '4 0'
    elif number == 8:
        print  '2 0'
    elif number == 9:
        print '8 0'
    else:
        print '0 0' 


Kod źródłowy w Python 3:
standard_input = int(input(''))
for i in range(0, standard_input, +1):
    number = int(input(''))
    if number == 1:
        print ('0 1')
    elif number == 0:
        print ('0 1')
    elif number == 2:
        print ('0 2')
    elif number == 3:
        print ('0 6')
    elif number == 4:
        print ('2 4')
    elif number == 5:
        print ('2 0')
    elif number == 6:
        print ('2 0')
    elif number == 7:
        print ('4 0')
    elif number == 8:
        print  ('2 0')
    elif number == 9:
        print ('8 0')
    else:
        print ('0 0')


Źródło:
http://pl.spoj.com/problems/FCTRL3/

poniedziałek, 16 października 2017

00004 - 601 - NWD - www.pl.spoj.com

Treść zadania:

Napisz funkcję:

int nwd(int a, int b);

która oblicza największy wspólny dzielnik liczb a i b,

0 <= a,b <= 1000000

Input
W pierwszej linii liczba testów t, w kolejnych liniach po dwie liczby w każdym wierszu.

Output
W każdej linii jedna liczba - wynik działania funkcji nwd
Example

Input:
5
1 4
4 1
12 48
48 100
123456 653421

Output:
1
1
12
4
3

Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int nwd (int a, int b)
{
    int c;
    for(;b!=0;)
    {
        c=a;
        a=b;
        b=c%b;
    }
    return a;
}

int main()
{
    int i, j=0,a,b;
    scanf("%d",&i);
    for(j;j<i;++j)
    {
        scanf("%d %d",&a,&b);
        printf("%d\n",nwd(a,b));
    }
    return 0;
}


Kod źródłowy w C++:
#include <iostream>
#include <cstdio>

using namespace std;

int nwd (int a, int b)
{
    int c;
    for(;b!=0;)
    {
        c=a;
        a=b;
        b=c%b;
    }
    return a;
}

int main()
{
    int i, j=0,a,b;
    cin>>i;
    for(j;j<i;++j)
    {
        cin>>a>>b;
        cout<<nwd(a,b)<<endl;
    }
    return 0;
}


Źródło zadania:
http://pl.spoj.com/problems/PP0501A/

środa, 11 października 2017

00003 - 1828 - Dodawanie liczb całkowitych - www.pl.spoj.com


Treść zadania:
Napisz program, który oblicza sumę trzech liczb całkowitych.
Wejście

Na wejście programu podane zostaną trzy liczby całkowite
(nieprzekraczające 100) rozdzielone znakiem nowej linii.
Wyjście

Na wyjściu ma się pojawić suma liczb, które pojawiły się na wejściu.
Przykład

Wejście:
100
-68
12

Wyjście:
44


Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c;
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);
    printf("%d",a+b+c);
    return 0;
}


Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{

    int a, b, c;
    cin >> a;
    cin >> b;
    cin >> c;
    cout << a+b+c <<endl;
    return 0;
}


Kod źródłowy w Python 2:
a = raw_input()
b = raw_input()
c = raw_input()
print int(a)+int(b)+int(c)


Kod źródłowy w Python 3:
a = input()
b = input()
c = input()
print (int(a)+int(b)+int(c))


Źródło zadania:
http://pl.spoj.com/problems/KC001/

poniedziałek, 9 października 2017

00002 - 438 - Liczby pierwsze www.pl.spoj.com


Treść zadania:

Sprawdź, które spośród danych liczb są liczbami pierwszymi

Input
n - liczba testów n<100000, w kolejnych liniach n liczb z przedziału [1..10000]

Output
Dla każdej liczby słowo TAK, jeśli liczba ta jest pierwsza, słowo: NIE, w przeciwnym wypadku.

Example
Input:
3
11
1
4

Output:
TAK
NIE
NIE

Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{
int q, i;
cin>>q;
for (int j=0; j<q; ++j)
{
    cin>>i;
    if (i==1) {cout<<"NIE"<<endl;}
    if (i==2) {cout<<"TAK"<<endl;}

        int l;
        for(l=2; l<i; ++l)
        {
            if ((i%l) == 0)
            {
                cout<<"NIE"<<endl;
                break;
            }
            if (l == (i-1))
            {
                cout<<"TAK"<<endl;
            }
        }
}
    return 0;
}

Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int q, i, j, l;
scanf("%d",&q);
for (j=0; j<q; ++j)
{
    scanf("%d",&i);
    if (i==1)
    {
        printf("NIE\n");
    }
    if (i==2)
    {
        printf("TAK\n");
    }
    for(l=2; l<i; ++l)
    {
        if ((i%l) == 0)
        {
            printf("NIE\n");
            break;
        }
        if (l == (i-1))
        {
            printf("TAK\n");
        }
    }
}
    return 0;
}

Kod źródłowy w Python 2:
pierw_spr = []
for i in range(0, 10001, +1):
 pierw_spr.append(0)
for a in range(2, 10001, +1):
 c = a
 if pierw_spr[a] == 0:
  pierw_spr[a] = 1
 while a+c < 10001:
        a = a+c
        pierw_spr[a] = 2
zest = int(raw_input(''))
for i in range(0, zest, +1):
    licz = int(raw_input(''))
    if pierw_spr[licz] == 1:
        print "TAK"
    else:
        print "NIE"
exit(0)

Kod źródłowy w Python 3:
pierw_spr = []
for i in range(0, 10001, +1):
    pierw_spr.append(0)
for a in range(2, 10001, +1):
    c = a
    if pierw_spr[a] == 0:
        pierw_spr[a] = 1
    while a+c < 10001:
        a = a+c
        pierw_spr[a] = 2
zest = int(input(''))
for i in range(0, zest, +1):
    licz = int(input(''))
    if pierw_spr[licz] == 1:
        print ("TAK")
    else:
        print ("NIE")
exit(0)

Link do zadania:
http://pl.spoj.com/problems/PRIME_T/

środa, 4 października 2017

00001 - 549 - Poste dodawanie - www.pl.spoj.com



Zadanie pokazuje w prosty sposób jak wczytywać ilość testów (w przykładzie jest to 2)
Przykłady to ilość serii danych na wejściu programu oraz ilość danych
dla każdego przykładu (w pierwszy 5 [1, 2, 3, 4, 5] w drugim przypadku 2 [-100, 100])

Należy pamiętać o przejściu do nowej linii po wypisaniu wyniku dla każdego testu (zestawu danych).

Treść zadania:

Twoim zadaniem jest dodać wszystkie liczby całkowite podane na wejściu.

Wejście
W pierwszym wierszu znajduje się liczba t testów (0 < t < 100) Każdy
test opisany jest w następujący sposób. W pierwszym wierszu dana jest
liczba n - liczba liczb do zsumowania.
Następnie podanych jest n liczb pooddzielanych spacją.

Przykład
Input:
2
5
1 2 3 4 5
2
-100 100

Output:
15
0

Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, n, t, x, y, z;
    scanf("%d",&i);
    for (y=0; y<i; ++y)
    {
        t = 0;
        x = 0;
        scanf("%d",&n);
        for (z=0; z<n; ++z)
        {
            scanf("%d",&x);
            t=t+x;
        }
        printf("%d\n",t);
    }
    return 0;
}


Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{
    int i, n, t, x, y, z;
    cin >> i ;
    for (y=0; y<i; y++)
    {
        t = 0;
        x = 0;
        cin>>n;
        for (z=0; z<n; z++)
        {
            cin>>x;
            t=t+x;
        }
        cout << t << endl;
    }
    return 0;
}


ID zadania: 549

Link do zadania:
http://pl.spoj.com/problems/RNO_DOD/

niedziela, 1 października 2017

00000 - 769 - Zadanie próbne - www.pl.spoj.com

ID zadania: 769

Zadanie do rozpoczęcia rozwiązywania zadań na platformie www.pl.spoj.com
Nie trzeba wypisywać tekstów "Podaj pierwszą liczbę" oraz "Podaj drugą liczbę"
Standardowe wejście i standardowe wyjście to podstawa w zadaniach,
pamiętajmy także o znakach nowej linii.

Treść zadania:
Napisać program do dodawania dwóch liczb całkowitych.
Na wejściu podane są w oddzielnych liniach dwie liczby
naturalne A oraz B mniejsze od 200.
Na wyjściu należy wypisać wartość ich sumy, A + B.

Przykład

Wejście
2
3

Wyjście
5


Kod źródłowy w C:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,b;
    scanf("%d",&a);
    scanf("%d",&b);
    printf("%d",a+b);
    return 0;
}


Kod źródłowy w C++:
#include <iostream>

using namespace std;

int main()
{
    int i, j;
    cin>>i;
    cin>>j;
    cout<<i+j<<endl;
    return 0;
}


Kod źródłowy w Python 3:
a = input()
b = input()
print (int(a)+int(b))

Link do zadania:
http://pl.spoj.com/problems/PTEST/