শনিবার, ৪ নভেম্বর, ২০১৭

UVA 12583 - Memory Overflow

#include<bits/stdc++.h>
using namespace std;
main()
{
    long ts,cs=1;
    cin>>ts;
    while(ts--)
    {
        long n,sz,i,cnt=0;
        char ch;
        string s;
        map<char,long>mp;
        queue<char>q;
        cin>>n>>sz>>s;
        for(i=0;i<sz;i++)
        {
            q.push(s[i]);
            if(mp[s[i]]!=0)
                cnt++;
            mp[s[i]]++;
        }
        for(i=sz;i<n;i++)
        {
            ch=q.front();
            if(mp[s[i]]!=0)
                {
                    cnt++;
                }
            mp[ch]--;
            mp[s[i]]++;
            q.pop();
            q.push(s[i]);
        }
        printf("Case %ld: %ld\n",cs++,cnt);
    }
}

UVA 12898 - And Or

Explaintion:
Step 1: Count bit length of a and b
step 2: if lenb>lena then OR = 2^lenb - 1 and And = 0*/
step 3: find/count not change bits between a and b, from MSB to LSB
        Or = b | R
         And = b | ~R  where R contain's 1 (total 1 = count)

Example:
[1]a = 7  b = 8

lena = 3 , Lenb = 4

 so Or = 2^lenb - 1 = 16 - 1 = 15

And = 0

[2] Let a = 12 , b =15

lena = 4, len b = 4
a = 1100 , b = 1111

start j = 3 and break when j = 1

R = 1LL<<(j+1) - 1 = (11)2
unchanged first 2 bits
Or = b | R = (1111) = 15
And = b & ~R = (1100) = 12

Source Code:
#include<bits/stdc++.h>
using namespace std;
#define maxlen 61
typedef long long ll;
int main()
{
    int n,c,i,lena,lenb,j;
    int a1[maxlen],b1[maxlen];
    ll Or,And,x,a,b,R;
    const ll one = 1;
    scanf("%d",&n);
    for(i = 1; i <= n; i++)
    {
        scanf("%lld %lld",&a,&b);
        /*Step 1: Count bit length of a and b*/
        c = 0;
        x = a;
        while(x)
        {
            a1[c] = x&1;
            x >>= 1;
            c++;
        }
        lena = c;
        c = 0;
        x = b;
        while(x)
        {
            b1[c] = x&1;
            x >>= 1;
            c++;
        }
        lenb = c;
        /*step 2: if lenb>lena then OR = 2^lenb - 1 and And = 0*/
        /*step 3: find/count not change bits between a and b, from LSB to MSB
                  Or = b | R and And = b | ~R  where R contain's 1 (total 1 = count)
         */
        if(lenb>lena)
        {
            Or =(one<<lenb)-1;
            And = 0;
        }
        else
        {
            for( j = lenb-1; j >= 0; j--)
            {
                if(a1[j]!=b1[j]) break;
            }
            R = (one<<(j+1))-1;
            Or = b|R;
            And = b&~R;
        }
        printf("Case %d: %lld %lld\n",i,Or,And);
    }
    return 0;
}

শুক্রবার, ৩ নভেম্বর, ২০১৭

UVA 1726 - Automatic Cheater Detection

#include<bits/stdc++.h>
#include<cstring>
using namespace std;
#define nl         printf("\n")
#define case(a,b)  printf("Case %lld: %lld\n",a,b)
#define P(a)       printf("%lld\n",a)
#define SP(a)      printf("%lld ",a)
#define G(a)       scanf("%lld",&a)
#define GG(a,b)    scanf("%lld %lld",&a,&b)
#define pb         push_back
#define DB         printf("I WAS HERE\n")
#define SPP(a,b)   printf("%lld %lld\n",a,b)
#define LL         long long
int main()
{
    long long t;
    G(t);
    while(t--)
    {
        LL n;
        G(n);
        long long ar[12]={0},ar2[12]={0};
        char r[10];
        long long i,j,d,s,cnt=0;
        for(i=1;i<=n;i++)
        {
            scanf("%lld %lld %s",&d,&s,r);
            if(s==0 && r[0]=='i')
            {
                ar[d]++;
            }
            else if(s==1 && r[0]=='c')
            {
                ar2[d]++;
            }
        }
        cnt=0;
        for(i=1;i<=9;i++)
        {
            for(j=i+1;j<=10;j++)
            {
               LL x=ar[i]*ar2[j];
                cnt+=x;
            }
        }
        P(cnt);
    }

return 0;
}

UVA 1729 - Owllen

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long ts,cs=1;
    cin>>ts;
    while(ts--)
    {
        string s;
        cin>>s;
        long mp[100]={0},i,mn=100000000;
        for(i=0;i<s.size();i++)
        {
            mp[s[i]-97]++;
        }
        for(i=0;i<26;i++)
        {
            mn=min(mp[i],mn);
        }
        printf("Case %ld: ",cs++);
        cout<<mn<<endl;
    }
}

UVA 1727 - Counting Weekend Days

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long ts;
    cin>>ts;
    while(ts--)
    {
        string s,s1;
        cin>>s>>s1;
        map<string,long>mp;
        mp["SUN"]=1;
        mp["MON"]=2;
        mp["TUE"]=3;
        mp["WED"]=4;
        mp["THU"]=5;
        mp["FRI"]=6;
        mp["SAT"]=0;
        int i,tot;
        if(s=="JAN"||s=="MAR"||s=="MAY"||s=="JUL"||s=="AUG"||s=="OCT"||s=="DEC")
        {
            tot=31;
        }
        else if(s=="FEB")
            tot=28;
        else tot=30;
        int x=mp[s1],x1,ans=0;
        x1=x;
        for(i=1;i<=tot;i++)
        {
            if(x%7==0||x%7==6)
                ans++;
            x++;
        }
        cout<<ans<<endl;
    }
}

UVA 1180 - Perfect Numbers

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long n;
    while(cin>>n)
    {
        string s;
        cin>>s;
        s+=',';
        long i,p=0;
        for(i=0; i<s.size(); i++)
        {
            if(s[i]==',')
            {
                if( p == 2 || p == 3 || p == 5 || p == 7 || p == 13 || p == 17 || p == 19 )
                    printf("Yes\n") ;
                else printf("No\n");
                p=0;
            }
            else
            {
                p=p*10+s[i]-48;
            }
        }
    }
}

বৃহস্পতিবার, ২ নভেম্বর, ২০১৭

UVA 10140 - Prime Distance

#include <bits/stdc++.h>
using namespace std;
#define mx 48000
long long vis[48000]= {0},ar[48000]= {0},i,j,k=0;
vector<long long >vec;
void sieve()
{
    for(i=4; i<=mx; i+=2)
        vis[i]=1;
    for(i=3; i<=sqrt(mx); i+=2)
    {
        if(vis[i]==0)
        {
            for(j=2*i; j<=mx; j+=i)
            {
                vis[j]=1;
            }
        }
    }
    vis[1]=1,vis[0]=1;
    for(i=1; i<=mx; i++)
    {
        if(vis[i]==0)
        {
            ar[k++]=i;
        }
    }
}
bool chk(long long nm)
{
    if(nm>=k)
    {
        for(long long i1=0; i1<k&&ar[i1]<=sqrt(nm); i1++)
        {
            if(nm%ar[i1]==0)
            {
                return 0;
            }
        }
        return 1;
    }
    else
    {
        if(vis[i]==0)
            return 1;
        else
            return 0;
    }
}
main()
{
    sieve();
    long long l,u;
    while(cin>>l>>u)
    {
        for(i=l; i<=u; i++)
        {
            if(chk(i))
            {
                vec.push_back(i);
            }
        }
        long long ll=vec.size(),dif=0,dif2,dif1,f=0,f1=0;
        if(ll<2)
            printf("There are no adjacent primes.\n");
        else
        {
            for(i=1; i<ll; i++)
            {
                if(i==1)
                {
                    dif=vec[i]-vec[i-1];
                    dif1=vec[i]-vec[i-1];
                    f=f1=i;
                }
                else
                {
                    dif2=vec[i]-vec[i-1];
                    if(dif2<dif)
                    {
                        f=i;
                        dif=dif2;
                    }
                    if(dif2>dif1)
                    {
                        dif1=dif2;
                        f1=i;
                    }
                }
            }
            printf("%lld,%lld are closest, %lld,%lld are most distant.\n",vec[f-1],vec[f],vec[f1-1],vec[f1]);
        }
        vec.clear();
    }
}

Factory Pattern

Factory Method  is a creational design pattern that provides an interface for creating objects in a superclass but allows subclasses to alte...