বুধবার, ১৮ অক্টোবর, ২০১৭

UVA 10912 - Simple Minded Hashing

#include<bits/stdc++.h>
#define sf2(a,b) scanf("%lld%lld",&a,&b)
using namespace std;
bool vis[28][28][355];
long long dp[28][28][355];
long long l,s;
long long callkorlam(long long pos,long long len,long long tot)
{
    if(l==len)
    {
        if(tot==0)
            return 1;
        else
            return 0;
    }
    if(tot==0)
    {
        if(l==len)
            return 1;
        else
            return 0;
    }
    if(pos>26)
    {
        if(len==l&&tot==0)
        {
            return 1;
        }
        else
            return 0;
    }
    long long fst=0,scnd=0;
    if(vis[pos][len][tot]!=false)
    {
        return dp[pos][len][tot];
    }
    if(tot-pos>=0)
    {
        fst=callkorlam(pos+1,len+1,tot-pos);
    }
    scnd=callkorlam(pos+1,len,tot);
    vis[pos][len][tot]=true;
    return dp[pos][len][tot]=fst+scnd;
}
main()
{
    long long cs=1;
    while(cin>>l>>s)
    {
        long long rs=0;
        if(l==0&&s==0)
            break;
        memset(vis,false,sizeof(vis));
        if(l>26 || s>351)
        {
            rs=0;
        }
        else
        {
            rs=callkorlam(1,0,s);
        }
            printf("Case %lld: %lld\n",cs++,rs);
    }
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...