Monday, July 28, 2014

UVa - 424 - Integer Inquiry

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>
#include <queue>
#include <vector>
using namespace std;

int main(){
    int hand, temp;
    string num, ans;
    stack <char> numbers, sum, after_sum;
    bool flag = true;
    while(getline(cin, num)){
        int l = num.size();
        for(int i = 0; i < l; i++)numbers.push(num[i]);
        hand = 0;
        while(!sum.empty() && !numbers.empty()){
            temp = (sum.top()-48)+ (numbers.top()-48) + hand;
            if(temp > 9)hand = temp/10, temp %= 10;
            else hand = 0;
            after_sum.push(temp+48);
            sum.pop(), numbers.pop();
            if(sum.empty() && numbers.empty() && hand > 0)after_sum.push(hand+48);
        }
        while(!sum.empty()){
            temp = hand + (sum.top()-48);
            if(temp > 9)hand = temp/10, temp %= 10;
            else hand = 0;
            after_sum.push(temp+48);
            sum.pop();
            if(sum.empty() && hand > 0)after_sum.push(hand+48);
        }
        while(!numbers.empty()){
            temp = hand + (numbers.top()-48);
            if(temp > 9)hand = temp/10, temp %= 10;
            else hand = 0;
            after_sum.push(temp+48);
            numbers.pop();
            if(numbers.empty() && hand > 0)after_sum.push(hand+48);
        }
        if(flag)sum = numbers;
        if(num == "0"){
            while(!after_sum.empty())ans.push_back(after_sum.top()), after_sum.pop();
            cout << ans << endl;
            break;
        }
        while(!after_sum.empty())sum.push(after_sum.top()), after_sum.pop();
        flag = false;
        ans.clear();
    }
    return 0;
}

Friday, July 25, 2014

UVa - 371 - Ackermann Functions

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    long long L, H, x, y, i, temp, cnt, ans, mx;
    while(cin >> x >> y){
        if(x == 0 && y == 0)break;
        L = min(x, y);
        H = max(x, y);
        mx = 0;
        if(L == 1)mx = 3, ans = 1;
        for(i = L; i <= H; i++){
            temp = i, cnt = 0;
            while(temp > 1){
                if(temp%2 == 0)temp /= 2, cnt++;
                else temp = (3*temp) + 1, cnt++;
            }
            if(cnt > mx)mx = cnt, ans = i;
        }
        cout << "Between " << L << " and " << H << ", " << ans << " generates the longest sequence of " << mx <<" values." << endl;
     }
    return 0;
}

UVa - 12554 - A Special "Happy Birthday" Song!!!

#include <iostream>
#include <string>
using namespace std;

int main(){
    string song[4] = {"Happy", "birthday", "to", "you"};
    string name[101];
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)cin >> name[i];
    int limit = (n / 16) + 1;
    limit *= 16;
    for(int i = 0; i < limit; i++)
        if(i % 16 == 11)cout << name[i%n] << ": Rujia" << endl;
        else cout << name[i%n] << ": " << song[i%4] << endl;

    return 0;
}

UVa - 458 - The Decoder

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main(){
    char sample[1000];
    while(scanf("%s", &sample) == 1){
        for(int i = 0; sample[i]; i++){
            printf("%c", sample[i] - 7);
        }
        cout << endl;
    }
    return 0;
}

UVa - 10494 - If We Were a Child Again

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
    long long mod_ans, mod, n, div, temp, m;
    string arbitrary;
    vector <long long>  div_ans;
    char sign;
    while(cin >> arbitrary >> sign >> n){
        int l = arbitrary.size();
        mod = 0;
        m = 0;
        for(int i = 0; i < l; i++){
            temp = (mod * 10) + (arbitrary[i]-48);
            mod = ((mod * 10) + (arbitrary[i]-48)) % n; mod_ans = mod;
            if(m == 1 && temp < n)div_ans.push_back(0);
            if(temp >= n){
                div = temp / n;div_ans.push_back(div);
                m = 1;
            }
        }
        if(sign == '/' && m == 1){
            int z = div_ans.size();
            for(int i = 0; i < z; i++)cout << div_ans[i];
            cout << endl;
        }
        else if(sign == '/' && m == 0)cout << 0 << endl;
        else if(sign == '%')cout << mod_ans << endl;
        div_ans.clear();
    }
    return 0;
}

UVa - 10062 - Tell me the frequencies!

#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int cnt[128], space = 0;
    vector <int> faaltu;
    string sample;
    while(getline(cin, sample)){
        memset(cnt, 0, sizeof(cnt));
        int l = sample.size();
        for(int i = 0; i < l; i++)cnt[sample[i]]++;
        for(int i = 1; i <= 127; i++)if(cnt[i] != 0)faaltu.push_back(cnt[i]);
        int limit = faaltu.size(), mn = 1010, index;
        if(space == 1)cout << endl;
        for(int i = 1; i <= limit; i++){
            for(int j = 32; j <= 127; j++){
                if(mn >= cnt[j] && cnt[j] > 0){
                    mn = cnt[j], index = j;
                }
            }
            if(index == 92)mn /= 2;
            if(mn != 0)cout << index << " " << mn << endl;
            cnt[index] = 0, mn = 1010;
        }
        space = 1;
        faaltu.clear();
    }
    return 0;
}

UVa - 1210 - Sum of Consecutive Prime Numbers

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#define mx 10000
using namespace std;
bool prime[mx];
int main(){
    vector <int> container;
    for(int i = 2; i <= sqrt(mx); i++)
        if(prime[i] == 0)
        for(int j = i+i; j <= mx; j += i)prime[j] = 1;
    for(int i = 2; i <= mx; i++)if(prime[i] == 0)container.push_back(i);
    int number;
    while(cin >> number){
        if(number == 0)break;
        int ans = 0, flag = 0, output = 0;
        for(int i = 0; ; i++){
            if(container[i] > number)break;
            ans += container[i];
            while(ans > number){
                ans -= container[flag];
                flag++;
            }
            if(ans == number)output++;
            if(container[i] == number)break;
        }
        cout << output << endl;
    }
    return 0;
}

UVa - 10035 - Primary Arithmetic

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    long long first, second;
    int mod, carry;
    vector <int> carry1, carry2;
    while(cin >> first >> second){
        if(first == 0 && second == 0)break;
        while(first > 0){
            mod = first % 10;
            carry1.push_back(mod);
            first -= mod;
            first /= 10;
        }
        while(second > 0){
            mod = second % 10;
            carry2.push_back(mod);
            second -= mod;
            second /= 10;
        }
        int l1, l2, mn, mx, ans = 0, in_hand = 0, push;
        l1 = carry1.size(), l2 =carry2.size();
        mn = min(l1, l2);
        mx = max(l1, l2);
        push = mx - mn;
        for(int i = 0; i < push; i++){
            if(l1 > l2)carry2.push_back(0);
            if(l1 < l2)carry1.push_back(0);
        }
        for(int i = 0; i < mx; i++){
            carry = carry1[i] + carry2[i] + in_hand;
            if(carry >= 10){
                ans++;in_hand = 1;
            }
            else in_hand = 0;
        }
        if(ans == 0)cout << "No carry operation." << endl;
        else if(ans == 1)cout << ans << " carry operation." << endl;
        else cout << ans << " carry operations." << endl;
        carry1.clear(), carry2.clear();
    }
    return 0;
}

Saturday, July 19, 2014

UVa - 11385 - Da Vinci Code

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
#define M 1000000
using namespace std;
int main(){
    vector <int> fib, numb, container;
    fib.push_back(1);
    fib.push_back(2);
    for(int i = 2; i < 45; i++)fib.push_back((fib[i-2]+fib[i-1]));
    char cipher[150];
    int t, n, num;
    cin >> t;
    while(t--){
        cin >> n;
        for(int i = 0; i < n; i++){
            cin >> num; numb.push_back(num);
        }
        getchar();
        gets(cipher);
        int z = 0;
        int l = strlen(cipher);
        char temp[l];
        for(int i = 0; i < l; i++)
            if(cipher[i] >= 'A' && cipher[i] <= 'Z'){
                temp[z] = cipher[i];
                z++;
            }
        temp[z] = '\0';
        for(int i = 0; i < n; i++)
            for(int j = 0; j < 45; j++)
                if(fib[j] == numb[i])container.push_back(j);
        int mx = 0;
        for(int i = 0; i < n; i++)
            if(mx < container[i])mx = max(mx, container[i]);
        char decipher[mx+1];
        memset(decipher, ' ', sizeof(decipher));
        int sz = container.size();
        for(int i = 0; i < sz; i++)decipher[container[i]] = temp[i];
        decipher[mx+1] = '\0';
        puts(decipher);
        container.clear();numb.clear();
        memset(cipher, 0, sizeof(cipher));
        memset(temp, 0, sizeof(temp));
    }
    return 0;
}

UVa - 10018 - Reverse and Add

#include <iostream>
using namespace std;

int main(){
    int t;
    long long n, rev, real, mod, temp;
    cin >> t;
    while(t--){
        cin >> n;
        int cnt = 0;
        while(1){
            real = n;
            rev = 0;
            while(n > 0){
                mod = n % 10;
                rev = (rev*10) + mod;
                n /= 10;
            }
            if(rev == real)break;
            real += rev; n = real; cnt++;
        }
        cout << cnt << " " << rev << endl;
    }
    return 0;
}

UVa - 12157 - Tariff Plan

#include <iostream>
using namespace std;

int main(){
    int t, n, d, mile, juice, cs = 1;
    cin >> t;
    while(t--){
        cin >> n;
        mile = 0;
        juice = 0;
        while(n--){
            cin >> d;
            if(d%10 == 0)d++;
            mile += ((d/30)+1);
            juice += ((d/60)+1);
        }
        int mile_ans = mile * 10, juice_ans = juice * 15;
        if(mile_ans < juice_ans)cout << "Case " << cs << ": Mile " << mile_ans << endl;
        else if(mile_ans > juice_ans)cout << "Case " << cs << ": Juice " << juice_ans << endl;
        else if(mile_ans == juice_ans)cout << "Case " << cs << ": Mile Juice " << juice_ans << endl;
        cs++;
    }
    return 0;
}

UVa - 11559 - Event Planning

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(){
    int person, budget, hotel, week, price_each_person, avail_bed, l, mn, ans;
    while(cin >> person >> budget >> hotel >> week){
        mn = 214748364;
        while(hotel--){
            cin >> price_each_person;
            for(int i = 0; i < week; i++){
                cin >> avail_bed;
                if(avail_bed >= person){
                    ans = price_each_person * person;
                    mn = min(mn, ans);
                }
            }
        }
        if(mn <= budget)cout << mn << endl;
        else cout << "stay home" << endl;
    }
    return 0;
}


UVa - 11879 - Multiple of 17


  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. int main(){
  5.     string number;
  6.     while(getline(cin, number)){
  7.         if(number == "0")break;
  8.         int l = number.size(), ans = 0;
  9.         for(int i = 0; i < l; i++)ans = (ans*10 + (number[i] - 48)) % 17;
  10.         if(!ans)cout << 1 << endl;
  11.         else cout << 0 << endl;
  12.     }
  13.     return 0;
  14. }

Friday, July 18, 2014

UVa - 686 - Goldbach's Conjecture (II)

#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#define M 33000
using namespace std;
bool prime[M];
int main(){
    for(int i = 2; i <= sqrt(M); i++)
        if(prime[i] == 0)
            for(int j = i+i; j < M; j += i)prime[j] = 1;

    int n;
    while(cin >> n){
        if(n == 0)break;
        int m = 0, x, y;
        for(int j = 2; j < n; j++)
            if(!prime[j] && !prime[n-j])
                if((j > 1 && j <= (n/2)) && ((n-j) > 1 && (n-j) >= (n/2)))m++;
        cout << m << endl;
    }

    return 0;
}

UVa - 543 - Goldbach's Conjecture

#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#define M 1000000
using namespace std;
bool prime[M];
int main(){
    for(int i = 2; i <= sqrt(M); i++)
        if(prime[i] == 0)
            for(int j = i+i; j < M; j += i)prime[j] = 1;

    int n;
    while(cin >> n){
        if(n == 0)break;
        int m = 0, x, y;
        for(int j = 2; j < n; j++)
            if(!prime[j] && !prime[n-j]){
                    x = j;y = (n-j);
                    m = 1;
                    break;
                }
        if(m)cout << n << " = " << x << " + " << y << endl;
        else cout << "Goldbach's conjecture is wrong." << endl;
    }

    return 0;
}

UVa - 10490 - Mr. Azad and his Son!!!!!

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;

int main(){
    int n;
    while(cin >> n){
        if(n == 0)break;
        int prove = 0;
        for(int i = 2; i <= sqrt(n); i++)
            if(n%i == 0){
                prove = 1;break;
            }
    if(prove == 0){
        if(n == 2)cout << "Perfect: 6!" << endl;
        else if(n == 3)cout << "Perfect: 28!" << endl;
        else if(n == 5)cout << "Perfect: 496!" << endl;
        else if(n == 7)cout << "Perfect: 8128!" << endl;
        else if(n == 13)cout << "Perfect: 33550336!" << endl;
        else if(n == 17)cout << "Perfect: 8589869056!" << endl;
        else if(n == 19)cout << "Perfect: 137438691328!" << endl;
        else if(n == 31)cout << "Perfect: 2305843008139952128!" << endl;
        else cout << "Given number is prime. But, NO perfect number is available." << endl;
    }
    else cout << "Given number is NOT prime! NO perfect number is available." << endl;
    }

    return 0;
}

UVa - 10235 - Simply Emirp

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;

int main(){
    int n, m, mod, l, rev;
    while(cin >> n){
        m = n;
        int prove = 0;
        for(int i = 2; i <= sqrt(n); i++)
            if(n%i == 0){
                prove = 1;break;
            }
        rev = 0;
        if(prove == 0){
            while(m > 0){
                mod = m % 10;
                rev = (rev*10) + mod;
                m /= 10;
            }
            int rev_ans = 0;

            for(int i = 2; i <= sqrt(rev); i++)
                if(rev%i == 0){
                    rev_ans = 1;break;
                }
            if(rev == n)rev_ans = 1;
            if(rev_ans == 0)cout << n << " is emirp." << endl;
            else cout << n << " is prime." << endl;
        }
        else cout << n << " is not prime." << endl;
    }

    return 0;
}

UVa - 11192 - Group Reverse

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main(){
    string s, rev_s;
    int l, a, n;
    while(cin >> n){
        if(n == 0)break;
        cin >> s;
        a = s.size();
        l = a / n;
        for(int j = l; j <= a; j += l)
            for(int i = j-1; i >= j-l; i--){
                rev_s.push_back(s[i]);
            }
        cout << rev_s << endl;
        s.clear();rev_s.clear();
    }
    return 0;
}

Thursday, July 17, 2014

UVa - 10991 - Region

#include <iostream>
#include <algorithm>
#include <cmath>
#include <iomanip>
#define pi acos(-1.0)
using namespace std;

int main(){
    double r1, r2, r3;
    double t1, t2, t3;
    double porishima, area_triangle, angle_circle1, angle_circle2, angle_circle3;
    int t;
    cin >> t;
    while(t--){
        cin >> r1 >> r2 >> r3;
        t1 = r2 + r3; t2 = r1 + r3; t3 = r1 + r2;

        porishima = (t1+t2+t3) / 2;
        area_triangle = sqrt(porishima * (porishima-t1) * (porishima-t2) * (porishima-t3));

        angle_circle1 = acos((t2*t2+t3*t3-t1*t1)/(2*t2*t3));
        angle_circle2 = acos((t1*t1+t3*t3-t2*t2)/(2*t1*t3));
        angle_circle3 = (pi - (angle_circle1 + angle_circle2));
        double area_circle = angle_circle1*r1*r1 + angle_circle2*r2*r2 + angle_circle3*r3*r3;
        cout << fixed << setprecision(6) << area_triangle  - area_circle/2 << endl;

    }

    return 0;
}

UVa - 11723 - Numbering Roads

#include <iostream>
using namespace std;

int main(){
    int n , r, ans, cs = 1;
    while(cin >> n >> r){
        if(n == 0 && r == 0)break;
        ans = n/r;
        if(ans <= 26){
            if(n%r == 0)ans--;
            if(n <= r)ans = 0;
            cout << "Case " << cs << ": " << ans << endl;
        }
        else cout << "Case " << cs << ": " << "impossible" << endl;cs++;
    }
    return 0;
}

UVa - 11878 - Homework Checker

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int main(){
    int a, b, ans, cnt = 0;
    string equation, x, y, answer;
    while(getline(cin, equation)){
        int l = equation.size(), j = 0;
        for(int i = j; i < l; i++){
            if(equation[i] == '+' || equation[i] == '-'){j++;break;}
            x.push_back(equation[i]);j++;
        }
        for(int i = j; i < l; i++){
            if(equation[i] == '='){j++;break;}
            y.push_back(equation[i]);j++;
        }
        for(int i = j; i < l; i++){
            if(equation[i] == '\0'){j++;break;}
            answer.push_back(equation[i]);j++;
        }
        int l1 = x.size(), l2 = y.size(), l3 = answer.size();

        a = x[0] - 48;
        for(int i = 1; i < l1; i++){
            a = (a*10) + (x[i]-48);
        }

        b = y[0] - 48;
        for(int i = 1; i < l2; i++){
            b = (b*10) + (y[i]-48);
        }

        ans = answer[0] - 48;
        for(int i = 1; i < l3; i++){
            ans = (ans*10) + (answer[i]-48);
        }
        int sol;
        for(int i = 0; i < l; i++)
        if(equation[i] == '+'){
            sol = a + b;
            if(sol == ans)cnt++;
            break;
        }
        else if(equation[i] == '-'){
            sol = a - b;
            if(sol == ans)cnt++;
            break;
        }
        x.clear();y.clear();answer.clear();equation.clear();
    }
    cout << cnt << endl;
    return 0;
}

UVa - 10019 - Funny Encryption Method

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

int convert_binary(int z){
    int cnt = 0;
    while(z > 0){
            if(z%2 == 1)cnt++;
            z /= 2;
        }
    return cnt;
}

int main(){
    int t, n, b1, m, mod, b2;
    vector <int> container;
    cin >> t;
    while(t--){
        cin >> n; b1 = 0, m = n, b2 = 0;
        b1 = convert_binary(n);
        while(m > 0){
            mod = m % 10;
            m -= mod;
            m /= 10;
            container.push_back(mod);
        }
        int l = container.size(), sum = 0;
        for(int i = 0; i < l; i++)sum += (container[i] * pow(16,i));
        b2 = convert_binary(sum);
        cout << b1 << " " << b2 << endl;
        container.clear();
    }
    return 0;
}

Wednesday, July 16, 2014

UVa - 11716 - Digital Fortress

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;

int main(){
    int t, limit, flag, i;
    string ans, code;
    cin >> t;
    getchar();
    while(t--){
        getline(cin, code);
        int l = code.size();limit = sqrt(l);flag = 0;
        for(i = 1; i <= limit; i++)
            if(i*i == l){flag = 1;break;}
        if(flag == 1){
            for(int j = 0; j < i; j++)
                for(int k = j; k < l; k += i)
                    ans.push_back(code[k]);
            cout << ans << endl;
        }
        else puts("INVALID");ans.clear();
    }

    return 0;
}

UVa - 11428 - Cubes

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

int main(){
    int N, x, y, j, m;
    while(cin >> N){
        if(N == 0)break;m = 0;
        for(j = 1; j <= 60; j++){
            for(int i = 1; i <= 60; i++)
                if((i * i * i) - (j * j * j) == N){
                    x = i; y = j; m = 1; break;
                }
            if(m == 1)break;
        }
        if(j == 61)cout << "No solution" << endl;
        else cout << x << " " << y << endl;
    }
    return 0;
}

UVa - 10924 - Prime Words

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main(){
    int prime[176] = {1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79,
    83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139,149, 151, 157, 163, 167, 173, 179, 181, 191,
    193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307,
    311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431,
    433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563,
    569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677,
    683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823,
    827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967,
    971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039};
    string letters;
    int sum, found;
    while(cin >> letters){
        sum = 0; found = 0;
        int l = letters.size();
        for(int i = 0; i < l; i++)
            if(letters[i] >= 97 && letters[i] <= 122)sum += (letters[i] - 96);
            else sum += (letters[i] - 38);
        for(int i = 0; i < 176; i++){
            if(sum == prime[i]){found = 1;break;}
        }
        if(found)cout << "It is a prime word." << endl;
        else cout << "It is not a prime word." << endl;
    }
    return 0;
}

UVa - 12468 - Zapping

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int stayed, reached, mx, mn, ans1, ans2, ans;
    while(cin >> stayed >> reached){
        if(stayed == -1 && reached == -1)break;
        mx = max(stayed, reached);
        mn = min(stayed, reached);
        ans1 = mx - mn;
        ans2 = (mn+100) - mx;
        ans = min(ans1, ans2);
        cout << ans << endl;
    }
    return 0;
}

UVa - 483 - Word Scramble

#include <iostream>
#include <string>
using namespace std;

int main(){
    string primary_words, rev_words;
    int cnt;
    while(getline(cin, primary_words)){
        int l = primary_words.size();cnt = 0;
        for(int i = 0; i < l; i++){
            cnt++;
            if(primary_words[i] == ' '){
                int m = 0;
                for(int k = cnt-2; k >= 0; k--){
                    rev_words.push_back(primary_words[i-1]);i--;m++;
                }i += m;
                rev_words.push_back(' ');cnt = 0;
            }
            if(i == l-1){
                int m = 0;
                for(int k = cnt-1; k >= 0; k--){
                    rev_words.push_back(primary_words[i]);i--;m++;
                }i += m;
            }
        }
        cout << rev_words << endl;
        rev_words.clear();
    }
    return 0;
}

Saturday, July 12, 2014

UVa - 488 - Triangle Wave

#include <iostream>
using namespace std;

int main(){
    int t, n, m;
    cin >> t;
    while(t--){
        cin >> n;
        cin >> m;
        while(m--){
            for(int i = 1; i <= n; i++){
                for(int j = 1; j <= i; j++){
                    cout << i;
                }
                cout << endl;
            }
            for(int i = n-1; i > 0; i--){
                for(int j = i; j > 0; j--){
                    cout << i;
                }
                cout << endl;
            }
            if(m == 0 && t == 0)break;
            cout << endl;
        }
    }
    return 0;
}

UVa - 12502 - Three Families

#include <iostream>
using namespace std;

int main(){
    int x, y, z, t, ans;
    cin >> t;
    while(t--){
        cin >> x >> y >> z;
        ans = z * (2*x - y) / (x + y);
        cout << ans << endl;
    }

    return 0;
}

UVa - 12459 - Bees' ancestors

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <iomanip>
#include <vector>
#include <cmath>
#define Pi acos(-1)
using namespace std;

int main(){
    int g;
    long long ans;
    vector <long long> fib;
    while(cin >> g){
        if(g == 0)break;
        fib.push_back(0);
        fib.push_back(1);
        for(int i = 1; i <= g; i++){
            ans = fib[i-1] + fib[i];
            fib.push_back(ans);
        }
        cout << ans << endl;fib.clear();
    }

    return 0;
}

UVa - 900 - Brick Wall Patterns

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(){
    long long ans;int n;
    vector <long long> fib;
    while(cin >> n){
        if(n == 0)break;
        fib.push_back(0);fib.push_back(1);
        for(int i = 1; i <= n; i++){
            ans = fib[i-1] + fib[i];
            fib.push_back(ans);
        }
        cout << ans << endl;fib.clear();
    }
    return 0;
}

UVa - 11462 - Age Sort

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main(){
    int t, n;
    vector <int> ans;
    while(cin >> t){
        if(t == 0)break;
        for(int i = 0; i < t; i++){
            cin >> n;ans.push_back(n);
        }
        sort(ans.begin(), ans.end());
        for(int i = 0; i < t; i++){
            cout << ans[i];
            if(i == (t-1))break;
            cout << " ";
        }cout << endl;
        ans.clear();
    }
    return 0;
}

UVa - 11900 - Boiled Eggs

#include <iostream>
using namespace std;

int main(){
    int t, n, num[33], p, q, j, cs = 1;
    cin >> t;
    while(t--){
        cin >> n >> p >> q;
        for(int i = 0; i < n; i++)cin >> num[i];
        int sum = 0;
        for(j = 0; j < n; j++){
            sum += num[j];
            if(sum > q)break;
        }
        if(j > p)cout << "Case " << cs << ": " << p << endl;
        else cout << "Case " << cs << ": " << j << endl;
        cs++;
    }
    return 0;
}

UVa - 10327 - Flip Sort

#include <iostream>
using namespace std;

int main(){
    int t, n[1003], ans, temp;
    while(cin >> t){
        for(int i = 0; i < t; i++)cin >> n[i];
        ans = 0;
        for(int i = 0; i < t; i++)
            for(int j = 0; j < t-1; j++)
                if(n[j] > n[j+1]){
                    temp = n[j];
                    n[j] = n[j+1];
                    n[j+1] = temp;
                    ans++;
                }
        cout << "Minimum exchange operations : " << ans << endl;
    }
    return 0;
}

Thursday, July 3, 2014

UVa - 11219 - How old are you?

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main(){
    int t, d1, m1, y1, d2, m2, y2, age, cs = 1;
    char start[13], finish[13], sd[5], sm[5], sy[5], fd[5], fm[5], fy[5];
    cin >> t;
    while(t--){
        cin >> start >> finish;
        sd[0] = start[0];sd[1] = start[1];d1 = sd[0]-48;sd[2] = '\0';
        sm[0] = start[3];sm[1] = start[4];m1 = sm[0]-48;sm[2] = '\0';
        sy[0] = start[6];sy[1] = start[7];sy[2] = start[8];sy[3] = start[9];y1 = sy[0]-48;sy[4] = '\0';

        fd[0] = finish[0];fd[1] = finish[1];d2 = fd[0]-48;fd[2] = '\0';
        fm[0] = finish[3];fm[1] = finish[4];m2 = fm[0]-48;fm[2] = '\0';
        fy[0] = finish[6];fy[1] = finish[7];fy[2] = finish[8];fy[3] = finish[9];y2 = fy[0]-48;fy[4] = '\0';

        d1 = (d1*10) + (sd[1]-48);d2 = (d2*10) + (fd[1]-48);
        m1 = (m1*10) + (sm[1]-48);m2 = (m2*10) + (fm[1]-48);

        for(int i = 1; i < 4; i++)y1 = (y1*10) + (sy[i]- 48);

        for(int i = 1; i < 4; i++)y2 = (y2*10) + (fy[i]- 48);

        age = (y1 - y2);
        if(m1 < m2)age--;
        else if(m1 == m2)if(d1<d2)age--;
        if(age < 0)cout << "Case #" << cs << ": Invalid birth date" << endl;
        else if(age > 130)cout << "Case #" << cs << ": Check birth date" << endl;
        else cout << "Case #" << cs << ": " << age << endl;
        cs++;
    }
    return 0;
}

Wednesday, July 2, 2014

UVa - 12700 - Banglawash

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main(){
    int t, n, store[5] = {0}, cs = 1;
    char s[11];
    cin >> t;
    while(t--){
        cin >> n;
        cin >> s;
        for(int i = 0; i < n; i++){
            if(s[i] == 'B')store[0]++;
            else if(s[i] == 'W')store[1]++;
            else if(s[i] == 'A')store[2]++;
            else if(s[i] == 'T')store[3]++;
        }
        if(n == store[0] || (store[0] + store[2]) == n && n != store[2]){
            cout << "Case " << cs << ": " << "BANGLAWASH\n";
            store[0] = 0;store[1] = 0;store[2] = 0, store[3] = 0;
        }
        else if(n == store[1] || (store[1] + store[2]) == n && n != store[2]){
            cout << "Case " << cs << ": " << "WHITEWASH\n";
            store[0] = 0;store[1] = 0;store[2] = 0, store[3] = 0;
        }
        else if(store[0] > store[1]){
            cout << "Case " << cs << ": " << "BANGLADESH " << store[0] << " - " << store[1] << endl;
            store[0] = 0;store[1] = 0;store[2] = 0, store[3] = 0;
        }
        else if(store[0] < store[1]){
            cout << "Case " << cs << ": " << "WWW " << store[1] << " - " << store[0] << endl;
            store[0] = 0;store[1] = 0;store[2] = 0, store[3] = 0;
        }
        else if(store[0] == store[1] && n != store[2]){
            cout << "Case " << cs << ": " << "DRAW " << store[1] << " " << store[3] << endl;
            store[0] = 0;store[1] = 0;store[2] = 0, store[3] = 0;
        }
        else if(n == store[2]){
            cout << "Case " << cs << ": " << "ABANDONED" << endl;
            store[0] = 0;store[1] = 0;store[2] = 0, store[3] = 0;
        }cs++;
    }
    return 0;
}

UVa - 10082 - WERTYU---another way

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<sstream>
#include<fstream>
#include<cstring>
#include<string>
#include<bitset>
#include<cctype>
#include<cmath>
#define mx 10077
using namespace std;
int main(){
    char memory[mx], s[mx];
    string x;
    int i;
    memset(memory, 0, strlen(s));

    memory['1'] ='`';
    memory['2'] = '1';
    memory['3'] = '2';
    memory['4'] = '3';
    memory['5'] = '4';
    memory['6'] = '5';
    memory['7'] = '6';
    memory['8'] = '7';
    memory['9'] = '8';
    memory['0'] = '9';
    memory['-'] = '0';
    memory['='] = '-';
    memory['\\'] = ']';
    memory[' '] = ' ';
    memory['W'] = 'Q';
    memory['E'] = 'W';
    memory['R'] = 'E';
    memory['T'] = 'R';
    memory['Y'] = 'T';
    memory['U'] = 'Y';
    memory['I'] = 'U';
    memory['O'] = 'I';
    memory['P'] = 'O';
    memory['['] = 'P';
    memory[']'] = '[';
    memory['S'] = 'A';
    memory['D'] = 'S';
    memory['F'] = 'D';
    memory['G'] = 'F';
    memory['H'] = 'G';
    memory['J'] = 'H';;
    memory['K'] = 'J';
    memory['L'] = 'K';
    memory[';'] = 'L';
    memory['\''] = ';';
    memory['X'] = 'Z';
    memory['C'] = 'X';
    memory['V'] = 'C';
    memory['B'] = 'V';
    memory['N'] = 'B';
    memory['M'] = 'N';
    memory[','] = 'M';
    memory['.'] = ',';
    memory['/'] = '.';

    while(gets(s)){
            x = "";
            for(i = 0; s[i]; i++){
                x = x + memory[s[i]];
            }
            cout << x << endl;
            }
 return 0;
}

UVa - 10469 - To Carry or not to Carry

#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int a, b;
    while(scanf("%d %d", &a, &b) == 2){
    printf("%d\n", a ^ b);
    }
    return 0;
}

UVa - 10110 - Light, more light

#include <iostream>
#include <cstdio>
#include <math.h>
#define end if(n == 0)break;
using namespace std;
int main(){
    long long int n, i, m, o;
    for(i =1; ;i++){
    scanf("%lld", &n);
    end;
    m = sqrt(n);
    o = m * m;
    if(o == n)
    printf("yes\n");
    else
    printf("no\n");
    }
    return 0;
}

UVa - 591 - Box of Bricks

#include <iostream>
#include <cstdio>
#define end if(t == 0)break;
using namespace std;

int main(){
    int t, n[50], i, e = 0;
    int sum = 0, avg, real;
    while(scanf("%d", &t) == 1){
        end;
        sum = 0;
        real = 0;
        for(i = 0; i < t; i++){
        scanf("%d", &n[i]);
        sum = sum + n[i];
        }
        avg = sum / t;
        for(i = 0; i < t; i++){
        if(n[i] > avg)
        real = real + (n[i] - avg);
        }
        e++;
        printf("Set #%d\nThe minimum number of moves is %d.\n", e, real);
        printf("\n");
        }
    return 0;
}

UVa - 138 - Street Numbers

#include <iostream>
#include <cstdio>
#include <math.h>
#define loop1 if(n == y){printf("%10lld% 10lld\n", n, x);t++;}
#define loop2 if(t == 10)break;x++;
using namespace std;

int main()
{
    long long n, x = 8, t = 0;
    double y;
    while(true)
    {
        y=sqrt((x * x + x) / 2);
        n = y;
        loop1;
        loop2;
    }
return 0;
}

UVa - 10082 - WERTYU

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main(){
    char s[10015];
    int i;
    while(gets(s)){
        for(i = 0; s[i]; i++){
            if(s[i] == '1')printf("`");
            if(s[i] == '2')printf("1");
            if(s[i] == '3')printf("2");
            if(s[i] == '4')printf("3");
            if(s[i] == '5')printf("4");
            if(s[i] == '6')printf("5");
            if(s[i] == '7')printf("6");
            if(s[i] == '8')printf("7");
            if(s[i] == '9')printf("8");
            if(s[i] == '0')printf("9");
            if(s[i] == '-')printf("0");
            if(s[i] == '=')printf("-");
            if(s[i] == '\\')printf("]");
            if(s[i] == ' ')printf(" ");
            if(s[i] == 'W')printf("Q");
            if(s[i] == 'E')printf("W");
            if(s[i] == 'R')printf("E");
            if(s[i] == 'T')printf("R");
            if(s[i] == 'Y')printf("T");
            if(s[i] == 'U')printf("Y");
            if(s[i] == 'I')printf("U");
            if(s[i] == 'O')printf("I");
            if(s[i] == 'P')printf("O");
            if(s[i] == '[')printf("P");
            if(s[i] == ']')printf("[");
            if(s[i] == 'S')printf("A");
            if(s[i] == 'D')printf("S");
            if(s[i] == 'F')printf("D");
            if(s[i] == 'G')printf("F");
            if(s[i] == 'H')printf("G");
            if(s[i] == 'J')printf("H");
            if(s[i] == 'K')printf("J");
            if(s[i] == 'L')printf("K");
            if(s[i] == ';')printf("L");
            if(s[i] == '\'')printf(";");
            if(s[i] == 'X')printf("Z");
            if(s[i] == 'C')printf("X");
            if(s[i] == 'V')printf("C");
            if(s[i] == 'B')printf("V");
            if(s[i] == 'N')printf("B");
            if(s[i] == 'M')printf("N");
            if(s[i] == ',')printf("M");
            if(s[i] == '.')printf(",");
            if(s[i] == '/')printf(".");
        }
        printf("\n");
    }
    return 0;
}

UVa - 10071 - Back to High School Physics

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
    int x, y;
    while(cin >> x >> y){
        cout << 2 * x * y << endl;
    }
    return 0;
}

UVa - 10055 - Hashmat the Brave Warrior

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
    long long x, y, ans;
    while(cin >> x >> y){
       ans = abs(x - y);
        cout << ans << endl;
    }
    return 0;
}

UVa - 10038 - Jolly Jumpers

#include <iostream>
#include <cstdio>
#include <algorithm>
#define mx 3050
using namespace std;
int main(){
    int n, c, b[mx], a[mx], i;
    while(scanf("%d", &n) == 1){
        c = 1;
    for(i = 0; i < n; i++){
            scanf("%d", &a[i]);
    }
    for(i = 0; i < n - 1; i++){
            b[i] = abs(a[i + 1] - a[i]);
    }
    sort(b, b+i);
    for(i = 1; i < n; i++){
        if(b[i] == b[i - 1]){
            c = 0; break;
    }
    }
    if(c == 0)
        printf("Not jolly\n");
    else
        printf("Jolly\n");
    }
return 0;
}

UVa - 1225 - Digit Counting

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main (){
    int t, i, n, r, count[10];
    cin >> t;
    while(t--){
        cin >> n;
        memset (count, 0, sizeof count);
        for (i = 1; i <= n; i++ ){
            r = i;
            while(r > 0) {
                count [r % 10]++;
                r = r / 10;
            }
        }
        for (i = 0; i < 9; i++ ){
            cout << count[i] << " ";
        }
        cout << count[9] << endl;
    }
    return 0;
}

UVa - 694 - The Collatz Sequence

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long collatz(long long n, long long limit){
    if(n > limit)return 0;
    if(n == 1)return 1;
    if(n % 2 == 0)return 1 + collatz(n / 2, limit);
    else return 1 + collatz(3 * n + 1, limit);
}
int main(){
    long long n, L, i;
    long long c = 1;
    while(cin >> n >> L){
        if(n < 0 && L < 0)break;
        i = collatz(n, L);
        cout << "Case " << c << ": A = " << n << ", limit = " << L;
        cout << ", number of terms = " << i << endl;
        c++;
    }
    return 0;
}

UVa - 575 - Skew Binary

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
int main(){
    long int n, i, sum, num, b;
    char s[100];
    while(gets(s)){
            sum = 0;
            n = strlen(s);
            for(i = 0; i < n; i++){
                    num = s[i] - '0';
                    b = num * (pow(2, n - i) - 1);
                    sum = sum + b;
                    }
                    if(sum == 0)break;
                    printf("%ld\n", sum);
                    }
                    return 0;
                    }

UVa - 401 - Palindromes

#include<iostream>
#include<algorithm>
#include<sstream>
#include<fstream>
#include<utility>
#include<cstdlib>
#include<cstring>
#include<string>
#include<bitset>
#include<vector>
#include<cstdio>
#include<cctype>
#include<cmath>
#include<queue>
#include<deque>
#include<stack>
#include<map>
#define mx 10077
using namespace std;
int main(){
    char memory[mx];
    string s, x, y;
    int i;
    memset(memory, 0, s.size());
    memory['A'] = 'A';
    memory['E'] = '3';
    memory['H'] = 'H';
    memory['I'] = 'I';
    memory['J'] = 'L';
    memory['L'] = 'J';
    memory['M'] = 'M';
    memory['O'] = 'O';
    memory['S'] = '2';
    memory['T'] = 'T';
    memory['U'] = 'U';
    memory['V'] = 'V';
    memory['W'] = 'W';
    memory['X'] = 'X';
    memory['Y'] = 'Y';
    memory['Z'] = '5';
    memory['1'] = '1';
    memory['2'] = 'S';
    memory['3'] = 'E';
    memory['5'] = 'Z';
    memory['8'] = '8';
    while(cin >> s){
            x = "";
            y = "";
        for(i = s.size() - 1; i >= 0; i--){
            x = x + s[i];
            y = y + memory[s[i]];
        }
        if(s == x && s != y)
            cout << s << " -- is a regular palindrome." << endl << endl;
        else if(s != x && s == y)
            cout << s << " -- is a mirrored string." << endl << endl;
        else if(s == x && s == y)
             cout << s << " -- is a mirrored palindrome." << endl << endl;
        else
            cout << s << " -- is not a palindrome." << endl << endl;
    }
 return 0;
}

UVa - 382 - Perfection

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
long long i, t, sum, j, a[100000];
t = 0;
while(t <= 100000)
{
scanf("%lld", &a[t]);
if(a[t] == 0)break;
t++;
}
printf("PERFECTION OUTPUT\n");
for(i = 0; i < t; i++)
    {
    sum = 0;
    printf("%5lld  ", a[i]);
    for(j = 1;j <= a[i] / 2; j++){
        if(a[i] % j==0)
        sum = sum + j;
        }
    if(a[i] == sum)
    printf("PERFECT\n");
    else if(a[i] > sum)
    printf("DEFICIENT\n");
    else if(a[i] < sum)
    printf("ABUNDANT\n");
    }
printf("END OF OUTPUT\n");
return 0;
}

UVa - 374 - Big Mod

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
long long b_mod(long long b, long long p, long long m){
    if(p == 0)return 1;
    if(p % 2 == 0)
        return ((b_mod(b, p / 2, m)) * (b_mod(b, p / 2, m))) % m;
    else
        return ((b % m) * b_mod(b, p - 1, m)) % m;
}
int main(){
    long long b, p, m;
    while(cin >> b >> p >> m){
        long long result = b_mod(b, p, m);
        cout << result << endl;
    }
    return 0;
}

UVa - 272 - TEX Quotes

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
int main(){
    long int i, count = 0;
    char s[100000];
    while(gets(s)){
    for(i = 0; s[i]; i++){
            if(s[i] == '"'){
                count += 1;
                if(count % 2 == 0){
                        printf("''");
                }
                else{
                        printf("``");
                }
                }
                else
                    printf("%c", s[i]);
                }
                printf("\n");
                }
                return 0;
                }

UVa - 136 - Ugly Numbers

#include <iostream>
#include <cstdio>

using namespace std;

int main(){
    printf("The 1500'th ugly number is 859963392.\n");
    return 0;
}

UVa - 102 - Ecological Bin Packing

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int a[10];
    int i, sum;
    for(i = 0; i < 9; i++){
        scanf("%d", &a);
    }
        sum = a[0] + a[4] + a[8];
    printf("%d", sum);
    return 0;
}

UVa - 100 - The 3n + 1 problem - recursive solution


  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. using namespace std;
  5. int gen(int n){
  6.     int count = 0;
  7.     if(== 1)
  8.         return count = 1;
  9.     if(% 2 == 0){
  10.         return count = 1 + gen(/ 2);
  11.     }
  12.     else{
  13.         return count = 1 + gen(3 * n + 1);
  14.     }
  15. }
  16. int main(){
  17.     int m, n, x, y;
  18.     while(cin >> x >> y){
  19.         cout << x << " " << y << " ";
  20.         m = max(x, y);
  21.         n = min(x, y);
  22.         int mx = 0;
  23.         for(int i = n; i <= m; i++){
  24.             gen(i);
  25.             mx = max(mx,gen(i));
  26.         }
  27.         cout << mx << endl;
  28.     }
  29.     return 0;
  30. }