Showing posts with label SCU. Show all posts
Showing posts with label SCU. Show all posts

Friday, 8 July 2016

Prime Ring Problem (UVA 524, HDU 1016, UVALive 5270, ZOJ 1457, SCU 1545, Regionals 1996 >> Asia - Shanghai)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

#include<bits/stdc++.h>
using namespace std;

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010

int ring[20], n;
bool isPrime[33], taken[20];

void print()
{
    cout<<ring[1];
    for(int i=2;i<=n;i++)
        cout<<" "<<ring[i];
    cout<<"\n";
return;
}

void backTrack(int tot, int lst) //(total taken already, last taken number)
{
    if(tot==n)
    {
        if(isPrime[lst+1])
            print();
        return;
    }

    for(int i=2;i<=n;i++)
        if(!taken[i])
            if(isPrime[lst+i])
            {
                taken[i]=1;
                ring[tot+1]=i;
                backTrack(tot+1, i);
                taken[i]=0;
            }
return;
}

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int kk=1, tc, m;
    string s;
    isPrime[2]=isPrime[3]=isPrime[5]=isPrime[7]=isPrime[11]=isPrime[13]=isPrime[17]=isPrime[19]=isPrime[23]=isPrime[29]=isPrime[31]=1;
    while(cin>>n)
    {
        CLR(taken);
        CLR(ring);
        ring[1]=taken[1]=1;//first circle fixed
        if(kk>1) cout<<"\n";
        cout<<"Case "<<kk++<<":\n";
        backTrack(1, 1); //first circle taken
    }
return 0;
}

Wednesday, 2 March 2016

Word Index (UVA 417, UVALive 5392, ZOJ 1342, POJ 1496, HDU 1336, SCU 1024)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive / spoj), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

#include<bits/stdc++.h>
using namespace std;

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100000

map<string, int> mp;
int cnt;

void precal(string s, int len)
{
    if(s.length()==len)
    {
        mp[s]=cnt++;
        return;
    }
    //cout<<s<<endl;
    char lst;
    if(s.length()==0)
        lst='a';
    else 
        lst = s[s.length()-1]+1;
    for(char ch=lst;ch<='z';ch++)
        precal(s+ch, len);
return;
}

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n;
    string s;
    cnt=1;
    for(int i=1;i<=5;i++)
    {
        precal("", i);
       // cout<<i<<endl;
    }
    while(cin>>s)
    {
        cout<<mp[s]<<"\n";
    }

return 0;
}

Monday, 21 December 2015

The Next Permutation (UVALive 4556, HDU 3283, POJ 3785, SCU 3485, Regionals 2009 >> North America - Greater NY)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

#include<bits/stdc++.h>
using namespace std;

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100000


int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n, m, x, y, a, b, c, digit[10];
    string s;
    cin>>tc;
    while(tc--)
    {
        cin>>n;
        cin>>s;
        int sl=s.size(), index=-1;

        for(int i=sl-1;i>=0;i--)
        {
            for(int j=sl-1;j>i;j--)
                if(s[j]>s[i])
                {
                    swap(s[i], s[j]);
                    index=i+1;
                    break;
                }
            if(index!=-1) break;
        }
        if(index==-1)    cout<<kk++ <<" BIGGEST\n";
        else
        {
            cout<<kk++<<" ";
            CLR(digit);
            for(int i=index;i<sl;i++)
                digit[s[i]-'0']++;
            for(int i=0;i<index;i++)
                cout<<s[i];
            for(int i=0;i<10;i++)
                while(digit[i]--)
                    cout<<i;
            cout<<"\n";
        }
    }
return 0;
}

Wednesday, 30 September 2015

UVA 1185 Big Number (UVALive 2697, HDU 1018, POJ 1423, ZOJ 1526, SCU 3094, Regionals 2002 >> Asia - Dhaka)

#include<bits/stdc++.h>
using namespace std;

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010

double digit[10000000+10];

void precal()
{
    digit[1]=log10(1);
    for(int i=2;i<=10000000;i++)
        digit[i]=digit[i-1]+log10(i);
return;
}

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int n, tc;
    precal();
    cin>>tc;
    while(tc--)
    {
        cin>>n;
        cout<<(int)digit[n]+1<<"\n";
    }
return 0;
}

UVA 640 Self Numbers (UVALive 5326, POJ 1316, HDU 1128, ZOJ 1180, SCU 2843, Regionals 1998 >> North America - Mid-Central USA)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive / spoj), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

#include<bits/stdc++.h>
using namespace std;

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 1000010

bool status[MX];

int func(int n)
{
    int nn=n;
    while(n)
    {
        nn+=n%10;
        n/=10;
    }
return nn;
}

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n;
    string s;
    char ch;
    for(int i=1;i<=1000000;i++)
        if(!status[i])
        {
            cout<<i<<"\n";
            for(int j=i;j<=1000000;)
            {
                j = func(j);
                if(status[j]) break;
                status[j]=true;
            }
        }
return 0;
}

Wednesday, 23 September 2015

The Hardest Problem Ever (UVALive 2540, POJ 1298, HDU 1048, ZOJ 1392, SCU 1006, Regionals 2002 >> North America - South Central USA)

///     Raihan Ruhin
///     CSE, Jahangirnagar University.
///     Dhaka-Bangladesh.
///     id: raihanruhin (topcoder / codeforces / codechef / uva / uvalive / spoj), 3235 (lightoj)
///     mail: raihanruhin@ (yahoo / gmail / facebook)
///     blog: ruhinraihan.blogspot.com

#include<bits/stdc++.h>
using namespace std;

#define SET(a) memset(a,-1,sizeof(a))
#define CLR(a) memset(a,0,sizeof(a))
#define PI acos(-1.0)

#define MOD 1000000007
#define MX 100010


int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int tc, kk=1, n;
    string s;
    char ch;
    while(getline(cin, s) && s=="START")
    {
        while(getline(cin, s) && s!="END")
        {
            for(int i=0;i<s.size();i++)
                if(s[i]>='A' && s[i]<='Z')
                    if(s[i]>='F') s[i]=s[i]-5;
                    else s[i]=s[i]+21;
            cout<<s<<"\n";
        }
    }
return 0;
}