10038 — Jolly Jumpers
Ввод
Каждая строка ввода содержит целое число n ≤ 3000, за которыми следуют n целых чисел, представляющих последовательность.
Вывод
Для каждой строки ввода создайте строку вывода с надписью Веселый или 'Не очень весело'.
Образец ввода
4 1 4 2 3
5 1 4 2 -1 6
Пример вывода
Весело
Не забавно

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 10038 - Jolly Jumpers
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    int n; // how many numbers
    while (cin >> n){
        int s[3005], t[3005]={0}; // series[] and test series
        bool ok = 1; // check Jolly or not
        
        cin >> s[0]; // initialize seriers[0]
        for (int i=1; i<n; i++){
            cin >> s[i]; // input series
            int temp = abs(s[i]-s[i-1]); // compare series
            if(temp <= 3000) t[temp]++; // input compare series
        }
        
        for (int i=1; i<n ;i++){ // check 1~n-1 in test[]
            if(t[i]==0){ // if there miss one in test[]
                ok = 0; // not jolly
                break;
            }
        }
        
        if(ok)
            cout << "Jolly" << endl;
        else
            cout << "Not Jolly" << endl;
    }
    
    return 0;
}

10056 — какова вероятность?
Ввод
Ввод будет содержать сначала целое число S (S ≤ 1000), которое указывает, сколько существует наборов входных данных. Следующие S строк будут содержать S наборов входных данных. Каждая строка содержит целое число N (N ≤ 1000), которое обозначает
количество игроков, число с плавающей запятой p, которое указывает вероятность успешного события в одном броске (если успех означает получение 3, тогда p равно вероятность выпадения 3 при
одном броске (для обычных игральных костей вероятность выпадения 3 равна 1/6), а I (I ≤ N) — порядковый номер игрока, вероятность выигрыша которого необходимо определить (Последовательный no изменяется от 1 до N). Вы можете предположить,
что в качестве входных данных не будет задано недопустимое значение вероятности §.
Вывод
Для каждого набора входных данных вывод в одной строкой вероятность выигрыша I-го игрока. Выходное число с плавающей запятой всегда будет иметь четыре цифры после запятой, как показано в примере вывода.
Пример ввода
2
2 0,166666 1
2 0,166666 2
Вывод образца
0,5455
0,4545

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 10056 - What is the Probability ?
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
/*
 設p = 獲勝的機率, q = 沒有獲勝的機率 = 1 - p, n = 總共的玩家數, x = 第幾個玩家要贏
 算式就是這樣:
 
 p * q ^ (x - 1) + p * q ^ (n + x - 1) + p * q ^ (2 * n + x - 1)...
 
 接下來我們可以把 p * q ^ (x - 1)提出來:
 
 ( p * q ^ (x - 1) ) * ( 1 + q ^ n + q ^ (2 * n)... )
 
 1 + q ^ n + q ^ (2 * n)...很明顯是個無窮等比級數,所以利用無窮等比級數公式代掉後,會變成以下式子:
 
 ( p * q ^ (x - 1) ) * ( 1 / (1 - q ^ n) )
 
 整理一下:
 
 ( p * q ^ (x - 1) ) / (1 - q ^ n)
 */
#include <iostream>
#include <cmath> // pow()
#include <iomanip> // fixed, setprecision
using namespace std;
int main()
{
    int caseNum; // case number
    cin >> caseNum; // input case number
    while(caseNum--){
        int n, x; // n: number of player, x: which player to win.
        double p, q, ans; // p: probability to win, q: probability to lose
        
        cin >> n >> p >> x; // input
        q = 1 - p; // lose probability
        if(q == 1) // can't win
            cout << "0.0000" << endl;
        else {
            ans = pow(q, x-1)*p/(1-pow(q,n)); // formula
            cout << fixed << setprecision(4) << ans << endl; // output
        }
    }
    return 0;
}

10170 — Отель с бесконечными номерами
Ввод
Ввод содержит раунд числа S (1 ≤ S ≤ 10000) и D (1 ≤ D ‹ 1015) в каждой строке. S обозначает первоначальный размер группы, а D означает, что вам нужно будет найти размер группы, проживающей в отеле в D-й день (начиная с 1). Все входные и выходные целые числа будут меньше 1015. Размер группы S означает, что в первый день в гостиницу приезжает группа из S человек и остается на S дней, затем приходит группа из S + 1 человек в соответствии с ранее описанным правила и т. д.
Вывод
Для каждой строки ввода выведите в отдельной строке размер группы, проживающей в отеле на D-й день.
Образец ввода
1 6
3 10
3 14
Пример вывода
3
5
6

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 10170 - The Hotel with Infinite Rooms
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
/*
 1. first = 1, day = 6
 1ppl 1
 2ppl 2 3
 3ppl 4 5 6
 
 2. first = 3, day = 10
 3ppl 1 2 3
 4ppl 4 5 6 7
 5ppl 8 9 10 11 12
*/
#include <iostream>
using namespace std;
int main()
{
    long long int first, day; // initial
    while(cin >> first >> day){ // input
        while((day - first)>=0) {
            day = day - first; // remain day
            if(day !=0)
                first++; // add people
        }
        cout << first << endl; // output
    }
    return 0;
}

10268–498-bis
Ввод
Ваша программа должна принимать количество строк текста. Каждая пара строк будет представлять одну проблему. Первая строка будет содержать одно целое число — значение x. Во второй строке будет список целых чисел a0, a1, …, an−1, an, представляющих набор полиномиальных коэффициентов. Ввод завершается ¡EOF¿.
Вывод
Для каждой пары строк ваша программа должна вычислять производную полинома для заданного значения x и выведите его в одну строку.
Образец ввода
7
1 -1
2
1 1 1
Пример вывода
1
5

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 10268 - 498-bis
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.

#include <iostream>
using namespace std;
int main()
{
    long long int x, sum; // initial x and sum up
    int a[1000000]; // array for input
    while (cin >> x){ // input x value
        int count; // count how many integer inside.
        for(count=0;;count++){
            cin >> a[count]; // input data to a[]
            if(getchar()=='\n') // stop at '\n'
                break;
        }
        sum = 0; // initial value to 0
        int exp = 1; // initial exponential value to 1
        for(int i = count-1 ; i>=0; i--){
            sum += a[i]*exp*(count-i); // a[last digit]*1*1+a[last digit-1]*x*2+a[last digit-2]*x*x*3...
            exp*=x; // for 1, x, x^2, x^3, x^4
        }
        cout << sum << endl; // output answer
    }
    return 0;
}

10783 — Нечетная сумма
Ввод
Может быть несколько тестовых случаев . Первая строка ввода дает вам количество тестов, T (1 ≤ T ≤ 100). Затем следуют T тестовых случаев. Каждый тест состоит из 2 целых чисел a и b (0 ≤ a ≤ b ≤ 100) в двух отдельных строках.
Вывод
Для каждого теста В этом случае вы должны вывести одну строку вывода — порядковый номер теста, за которым следует сумма нечетных целых чисел в диапазоне [a, b].
Образец ввода
2
1
5
3
5
Пример вывода< br /> Случай 1: 9
Случай 2: 8

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 10783 - Odd Sum
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.

#include <iostream>
using namespace std;
int main()
{
    int cases, a, b, sum; // how many cases
    cin >> cases; // input cases
    for (int i=0; i<cases; i++){ // for loop for how many cases
        cin >> a >> b; // input a and b
        if(a==b and a%2==0) // if a = b and there were even then output 0
            sum = 0;
        else{
            if (a%2 == 0) // because a <= b if a is even then move forward b.
                a++;
            if (b%2 == 0) // because a <= b if b is even then move forward a.
                b--;
            if(a>b){ // if a++ and b-- then swap
                int tmp;
                tmp = a;
                a = b;
                b = tmp;
            }
            sum = 0; // initial answer
            for (int i=a; i<=b; i=i+2) // sum up from a to b
                sum += i;
        }
        cout << "Case " << i+1 << ": " << sum << endl;
    }
    return 0;
}

10812 — Побей спред!
Ввод
Первая строка ввода содержит n, количество тестовых случаев. Далее следуют n строк, каждая из которых представляет тестовый пример. Каждый тест дает s и d, неотрицательные целые числа, представляющие сумму и (абсолютную) разницу между двумя окончательными оценками.
Вывод
Для для каждого набора тестовых данных выведите строку с двумя окончательными оценками, начиная с наибольшей. Если таких оценок нет,
выведите строку, содержащую невозможно. Помните, что футбольные результаты всегда представляют собой неотрицательные целые числа.
Образец входных данных
2
40 20
20 40
Пример вывода
30 10
невозможно

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 10812 - Beat the Spread!
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n; // input how many data.
    for (int i=0; i < n; i++){
        int a, b, scoreA, scoreB; // initial variable
        cin >> a >> b;
        scoreA = (a+b)/2;
        scoreB = (a-b)/2;
        if (scoreA < scoreB) { // swap if scoreB > scoreA
            int tmp;
            tmp = scoreA;
            scoreA = scoreB;
            scoreB = tmp;
        }
        if(scoreA < 0 or scoreB < 0 or (a+b)%2==1 or (a-b)%2==1) // impossible if scoreA,B < 0 or a+b are odds.
            cout << "impossible";
        else{
            cout << scoreA << " " << scoreB;
        }
    }
    return 0;
}

11349 — Симметричная матрица
Ввод
Первая строка ввода содержит количество тестовых случаев T ≤ 300. Далее следуют T тестовых случаев, описанных следующим образом. Первая строка каждого набора входных данных содержит n — размерность квадратной матрицы. Затем следуют n строк, каждая из которых содержит строку i. Строка содержит ровно n элементов, разделенных пробелом. j-е число в строке i – это элемент Mij матрицы, которую необходимо обработать.
Вывод
Для каждого теста выведите одну строку 'Тест #т: С'. Где t — номер теста, начинающийся с 1. Строка S равна Симметричному, если матрица симметрична, и Несимметричному в любом другом случае.
Входные данные для примера
2
N = 3
5 1 3
2 0 2
3 1 5
N = 3
5 1 3
2 0 2
0 1 5
Пример вывода
Тест №1: симметричный.
Тест № 2: Несимметричный.

//  Author: Sian Jyun, Kuo
//  Date: Sep.17.2019
//  Purpose: 11349 - Symmetric Matrix
//
//  Created by Sian Jyun Kuo on 2019/9/17.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    long long n[101][101]; // initial matrix
    int T, N; // T: cases, N: NxN matrix
    cin >> T;
    for(int i=1; i<=T; i++){
        cin.ignore(4); // ignore "N = "
        cin >> N; // input N
        for (int i= 0; i<N;i++){ // input n[][] matrix
            for(int j=0; j<N; j++){
                cin >> n[i][j];
            }
        }
        int flag = 1; // flag for true or false
        for (int i= 0; i<N;i++){
            for(int j=0; j<N; j++){
                if (n[i][j] < 0 or n[i][j] != n[N-1-i][N-1-j]){ // must n[][] >=0 and compare matrix
                    flag = 0; // false
                    break;
                }
            }
            if(!flag) break;
        }
        cout << "Test #" << i << ": "; // output
        if(flag)
            cout << "Symmetric." << endl; // true >> symmetric
        else
            cout << "Non-symmetric." << endl; // false >> non-symmetric
    }
    return 0;
}