11005 — самая дешевая база
Ввод
Ввод имеет менее 25 тестов случаи. Первая строка входного файла обозначает это количество тестовых случаев. Описание каждого теста приведено ниже:
Первые 4 строки каждого набора содержат по 9 целых чисел: стоимость 36 символов в указанном выше порядке. Затем следует количество запросов в строке само по себе. Каждый запрос отображается в отдельной строке и состоит из числа от 0 до 2000000000 в десятичном формате.
Вывод
Для каждого случая в input, выведите одну строку 'Case X:' без кавычек, где X – номер дела, начиная с 1.
Для каждого запроса внутри дела выведите одну строку 'Самая дешевая база(ы) для номера Y :', за которой следует по самым дешевым основаниям в порядке возрастания, разделенным одним пробелом. Y — запрос в десятичном формате. Печатайте пустую строку между случаями. Числа во втором примере вывода на самом деле все в одной строке, как и в первом примере вывода. Из-за отсутствия горизонтального пространства они показаны разбитыми на две строки.
Образец ввода
2
10 8 12 13 15 13 13 16 9
11 18 24 21 23 23 23 13 15
17 33 21 23 27 26 27 19 4
22 18 30 30 24 16 26 21 21
5
98329921
12345
800348
14
873645
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
> 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
4
0
1
10
100
Пример вывода
Случай 1:
Самые дешевые основания для числа 98329921: 24
Самые дешевые основания для числа 12345: 13 31
Самая дешевая база для номера 800348: 31
Самая дешевая база для номера 14: 13
Самая дешевая база для номера 873645: 22
Случай 2:
Самая дешевая база(ы) для числа 0: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
Самые дешевые базы для числа 1: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20 21 22 23 2 4 25 26 27 28 29 30 31 32 33 34 35 36
Самые дешевые базы для числа 10: 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36
Самые дешевые базы для числа 100: 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36

//  Author: Sian Jyun, Kuo
//  Date: Sep.18.2019
//  Purpose: 11005 - Cheapest Base
//
//  Created by Sian Jyun Kuo on 2019/9/18.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    int caseNum, N;
    int alphaMoney[36];
    cin >> caseNum;
    for (int caseUse=0; caseUse<caseNum; caseUse++){
        cout << "Case " << caseUse+1 << ":" << endl;
        
        for (int j=0; j<36 ; j++) // input value for each word.
            cin >> alphaMoney[j];
        
        cin >> N; // input how many numbers to count.
        int change[26]={0}; // maximum 25
        for (int k=0; k<N; k++) {
            cin >> change[k];
        }
        
        for (int k=0; k<N ; k++ ){
            int eachMoney[37]={0}; // each Base money
            
            // count for each base money
            for(int m=2; m<37; m++ ){
                for (int j=0; j<N; j++){
                    int changeTmp = change[k];
                    while(changeTmp>0){
                        int tmp = changeTmp%m;
                        changeTmp /= m ;
                        eachMoney[m] += alphaMoney[tmp];
                    }
                }
            }
            // Find minimum
            int min = eachMoney[2];
            for(int j=3; j<37;j++)
                if(eachMoney[j]<min) min = eachMoney[j];
            
            // Output
            cout << "Cheapest base(s) for number " << change[k] << ": ";
            for (int j=2; j<37;j++) if(eachMoney[j]==min) cout << j << " ";
            cout << endl;
        }
        
        if(caseUse!=caseNum-1) cout << endl;
    }
    return 0;
}

10050 — Hartals
Ввод
Первая строка ввода состоит из одно целое число T, указывающее количество тестовых случаев, которые нужно выполнить. Первая строка каждого теста содержит целое число N (7 ≤ N ≤ 3650), указывающее количество дней, в течение которых должно выполняться моделирование. В следующей строке записано еще одно целое число P (1 ≤ P ≤ 100), обозначающее количество политических партий в данном случае. i-я из следующих P строк содержит положительное целое число hi (которое никогда не будет кратно 7), задающее параметр Харталя для партии i (1 ≤ i ≤ P).
Выходные данные
Для каждого теста во входных данных выведите количество потерянных рабочих дней. Каждый вывод должен быть на
отдельной строке.
Образец ввода
2
14
3
3
4
8
100
4
12
15
25
40
Пример вывода
5
15

//  Author: Sian Jyun, Kuo
//  Date: Sep.19.2019
//  Purpose: 10050 - Hartals
//
//  Created by Sian Jyun Kuo on 2019/9/19.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    int N; // number of cases
    cin >> N;
    for(int i=0; i<N; i++){
        int day, totalParty; // day: days, totalParty: number of parties
        cin >> day >> totalParty;
        int count = 0; // count: count for how many Hartals
        int party[101]={0}; // store party's hartal day
        int hartal[3651] = {0}; // hartal recore, if 1 >> hartal
        for (int j = 0; j< totalParty; j++) // input party's hartal day.
            cin >> party[j];
        // record and input hartal days
        for (int i=0 ; i< totalParty; i++){
            for(int j=party[i]; j<=day; j=j+party[i] ){
                if(j%7!=6 and j%7!=0){ // There were no hartal when Friday and Saturday
                    hartal[j]=1;
                }
            }
        }
        // Record how many hartal days.
        for (int i=0; i<=day; i++){
            if(hartal[i]==1)
                count++;
        }
        cout << count << endl; // Output answer
        
    }
    return 0;
}

10193 — All You Need Is Love
Input
Первая строка ввод представляет собой положительное целое число N ‹ 10000, которое обозначает количество тестовых случаев. Затем последуют 2 ∗ N строк. Каждая пара строк состоит из одного тестового падежа. Каждая строка пары обозначает каждую строку (S1 и S2), которую необходимо ввести в качестве входных данных для машины любви. Ни одна строка не будет содержать более 30 символов. Вы можете предположить, что все строки во входных данных будут действительными в соответствии с приведенными выше правилами.
Вывод
Для каждой пары строк вы должны вывести одну из следующих сообщений:
Пара #p: Все, что вам нужно, это любовь!
Пара #p: Любовь - это еще не все, что вам нужно!
Где p означает номер пары (начиная с 1) . Вы должны напечатать первое сообщение, если существует хотя бы одна допустимая строка L, например, и S1, и S2 могут быть составлены только из L. В противном случае напечатайте вторую строку.
Пример ввода
5
11011
11000
11011
11001
111111
100
1000000000
110
1010
100
Пример вывода
Пара №1: Все, что вам нужно, это любовь!
Пара № 2: Любовь — это еще не все, что вам нужно!
Пара №3: ​​Любовь — это еще не все, что вам нужно!
Пара №4: Все, что вам нужно, это любовь!
Пара №5: Все, что вам нужно, это любовь!

//  Author: Sian Jyun, Kuo
//  Date: Sep.19.2019
//  Purpose: 10193 - All You Need Is Love
//
//  Created by Sian Jyun Kuo on 2019/9/19.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
// function transfer from binary to decimal
int StringtoInt (char a[31]) {
    int ans = 0;
    for(int i=0; i<30;i++){
        if(a[i]=='\0')break;
        ans*=2;
        if(a[i]=='1') ans+=1;
    }
    return ans;
}
// function gcd
int gcd(int a, int b){
    if(a<b) return gcd(b, a);
    if (b==0) return a;
    return gcd(b, a%b);
}
int main()
{
    int N; // number of cases
    cin >> N;
    for (int i=0; i<N ;i++){
        char a[31], b[31]; // two binary array
        cin >> a >> b; // input array
        int p, q; // decimal for binary
        // binary to decimal
        p = StringtoInt(a);
        q = StringtoInt(b);
        if (gcd(p,q)>1){
            cout << "Pair #" << i+1 << ": All you need is love!" << endl;
        }else{
            cout << "Pair #" << i+1 << ": Love is not all you need!" << endl;
        }
    }
    return 0;
}

10190 — разделяй, но не властвуй!
Ввод
Ввод будет состоять из произвольного количества строк. Каждая строка будет состоять из двух неотрицательных целых чисел n, m, которые меньше 2000000000. Вы должны читать, пока не дойдете до конца файла.
Вывод
Для каждой пары n, m вы должны вывести соответствующую последовательность a (как определено выше) в одной строке, при этом все соседние числа последовательности разделены одним пробелом. Если последовательности не существует, потому что она нарушает какое-то ограничение, просто напечатайте фразу "Скучно!" в одной строке (без кавычек).
Пример ввода
125 5
30 3
80 2
81 3
Вывод образца
125 25 5 1
Скучно!
Скучно!
81 27 9 3 1

//  Author: Sian Jyun, Kuo
//  Date: Sep.19.2019
//  Purpose: 110190 - Divide, But Not Quite Conquer!
//
//  Created by Sian Jyun Kuo on 2019/9/19.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    int m, n;
    while(cin >> m >> n){ // input m,n
        int tmp = m; // store temp for m
        if(m<2 or n<2){ // if m,n ==0 >> 0 or oo ; ==1 >> oo
            cout << "Boring!" << endl;
            continue;
        }
        
        while(m%n==0 and m>1){ // calculate
            m=m/n;
        }
        if (m!=1)
            cout << "Boring!" << endl;
        else {
            m = tmp; // resume m
            while(m%n==0 and m>1){
                cout << m << " "; // output data
                m=m/n;
            }
            cout << "1" << endl; // final add a "1"
        }
    }
    return 0;
}

10235 — Просто Эмирп
Ввод
Ввод состоит из нескольких строк, задающих значения для N.
Вывод
Для каждого N, заданного во входных данных, выходные данные должны содержать одно из следующего:

  1. «N не является простым числом», если N не является простым числом.
  2. «N — простое число», если N — простое число, а N — не Emirp.
  3. ‘N — это emirp.’, если N — это Emirp.

Образец ввода
17
18
19
179
199
Образец вывода
17 – emirp.
18 – не простое число.
19 – простое число.
179 – emirp.
199 – эмир.

//  Author: Sian Jyun, Kuo
//  Date: Sep.19.2019
//  Purpose: 10235 - Simply Emirp
//
//  Created by Sian Jyun Kuo on 2019/9/19.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
using namespace std;
int main()
{
    int primeTable[1000000]={0};
    for (int i=2; i<1000; i++){
        for (int j=2*i; j<1000000;j+=i) primeTable[j]=1;
    } // make a non-prime table for check
    
    int n;
    while(cin >> n){
        int tmp = n; // store n
        int rn; // rotate n
        for(rn=0;n;n/=10) rn = rn*10 + n%10; // rotate n ex. 123 to 321
        
        // output as critera
        if(primeTable[tmp] == 1) cout << tmp << " is not prime.";
        else if(primeTable[rn] == 1) cout << tmp << " is prime.";
        else if(tmp==rn) cout << tmp << " is prime."; // ex. tmp = 2, 3, 5, 7 == rn
        else cout << tmp << " is emirp.";
        cout << endl;
    }
    return 0;
}

10922–2 девятки
Ввод
Ввод представляет собой файл, такой как что каждая строка содержит положительное число. Строка, содержащая число 0, является концом ввода. Заданные числа могут содержать до 1000 цифр.
Вывод
Вывод программы должен указывать для каждого введенного числа, является ли оно кратно девяти, а если кратно, то значение его девятистепени. См. образец вывода для примера ожидаемого форматирования вывода.
Пример ввода
9999999999999999999999
9
999999999999999999999999999999998
0
Пример вывода
9999999999999999999999 кратно 9 и имеет 9-степень 3.
9 кратно числа 9 и имеет 9-степень 1.
9999999999999999999999999999998 не кратно 9.

//  Author: Sian Jyun, Kuo
//  Date: Sep.19.2019
//  Purpose: 10922 - 2 the 9s
//
//  Created by Sian Jyun, Kuo on 2019/9/19.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s;
    while(cin >> s and s!="0"){ // input string s
        int sum = 0;
        int degree = 0;
        bool nineMulti = false; // flag for multi of nine
        for (int i=0; i< s.size(); i++) sum += s[i] - '0'; // sum up all digits number
        if (sum%9==0) { // if multi of nine, nineMulti >> true, degree = 1
            nineMulti = true;
            degree = 1;
        }
        int collect = sum; // check another run by use collect
        while(collect%9==0 and collect!=9 ){ // collect != 9 for stop infinite loop.
            collect = 0; // reset zero for next run.
            while(sum>0){
                collect += sum%10; // sum up all digits.
                sum = sum/10;
            }
            sum = collect; // reset sum
            degree++; // add degree
        }
        // Output
        if(nineMulti) cout << s << " is a multiple of 9 and has 9-degree " << degree << "." << endl;
        else cout << s << " is not a multiple of 9." << endl;
        
    }
    return 0;
}

11417 — GCD
Ввод
Входной файл содержит не более 100 строк. входов. Каждая строка содержит целое число N (1 ‹ N ‹ 501). Значение N указано в условии задачи. Ввод завершается строкой, содержащей один ноль. Этот ноль не должен обрабатываться.
Вывод
Для каждой строки ввода создайте одну строку вывода. Эта строка содержит значение G для соответствующего N.
Образец ввода
10
100
500
0
Вывод образца
67
13015
442011

//  Author: Sian Jyun, Kuo
//  Date: Sep.19.2019
//  Purpose: 11417 - GCD
//
//  Created by Sian Jyun, Kuo on 2019/9/19.
//  Copyright © 2019 Sian Jyun Kuo. All rights reserved.
#include <iostream>
#include <string>
using namespace std;
// function greatest common divisor
int gcd(int m, int n){
    if (m < n) return gcd(n, m);
    if(n==0) return m;
    return gcd(n, m%n);
}
int main()
{
    int N;
    while(cin >> N and N!=0){
        int ans = 0;
        for (int i=1; i<N;i++){ // as question
            for (int j = i+1; j<=N;j++)
                ans += gcd(i,j);
        }
        cout << ans << endl;
    }
    return 0;
}