Showing posts with label UVA Solution. Show all posts
Showing posts with label UVA Solution. Show all posts

Friday, February 24, 2017

UVa 357

#include<bits/stdc++.h>
#define ll long long

using namespace std;


ll count( ll S[], ll m, ll n )
{
 ll i, j, x, y;

 ll table[n+1][m];
 
 for (i=0; i<m; i++)
  table[0][i] = 1;

 for (i = 1; i < n+1; i++)
 {
  for (j = 0; j < m; j++)
  {
  
   x = (i-S[j] >= 0)? table[i - S[j]][j]: 0;
   y = (j >= 1)? table[i][j-1]: 0;
   table[i][j] = x + y;
  }
 }
 return table[n][m-1];
}


int main()
{
 ll a[] = {1,5,10,25,50};
 ll m = 5;
 ll n;
 
 while(cin>>n){
  ll ans;
  
  ans = count(a,m,n);
  
  if(ans>1){
   cout<<"There are "<<ans<<" ways to produce "<<n<<" cents change."<<'\n';
  }
  else cout<<"There is only "<<ans<<" way to produce "<<n<<" cents change."<<'\n';
 }
 return 0;
}

UVa 11137

#include<bits/stdc++.h>
#define ll long long

using namespace std;

ll a[21];
void precal(){

    for(int i=0; i< 21 ;i++) a[i]= ( (i+1) * (i+1) * (i+1) );

}

ll count( ll S[], ll m, ll n )
{
 ll i, j, x, y;
 ll table[n+1][m];

 for (i=0; i<m; i++)
  table[0][i] = 1;
 for (i = 1; i < n+1; i++)
 {
  for (j = 0; j < m; j++)
  {
   x = (i-S[j] >= 0)? table[i - S[j]][j]: 0;
   y = (j >= 1)? table[i][j-1]: 0;
   table[i][j] = x + y;
  }
 }
 return table[n][m-1];
}



int main(){

 precal();

//cout<<a[20];
 ll n,ans;

    while(cin >> n){

        ans = count(a,21,n);
        cout<< ans << '\n';
    }


 return 0;
}

UVa 674

#include<bits/stdc++.h>
#include<iomanip>
#define ll long long

using namespace std;


ll count( ll S[], ll m, ll n )
{
 ll i, j, x, y;

 ll table[n+1][m];
 
 for (i=0; i<m; i++)
  table[0][i] = 1;

 for (i = 1; i < n+1; i++)
 {
  for (j = 0; j < m; j++)
  {
  
   x = (i-S[j] >= 0)? table[i - S[j]][j]: 0;
   y = (j >= 1)? table[i][j-1]: 0;
   table[i][j] = x + y;
  }
 }
 return table[n][m-1];
}


int main()
{
 ll a[] = {1,5,10,25,50};
 ll m = 5;
 ll n;
 
 while(cin>>n){
  ll ans;
  
  ans = count(a,m,n);
  
  cout<<ans<<'\n';
 }
 return 0;
}

Wednesday, February 8, 2017

UVa 10130

#include<bits/stdc++.h>

using namespace std;

int knap(int W, int wt[], int val[], int n)
{
   int i, w;
   int K[n+1][W+1];
   for (i = 0; i <= n; i++)
   {
       for (w = 0; w <= W; w++)
       {
           if (i==0 || w==0)
               K[i][w] = 0;
           else if (wt[i-1] <= w)
                 K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]],  K[i-1][w]);
           else
                 K[i][w] = K[i-1][w];
       }
   }
 
   return K[n][W];
}

int main(){
 
 int t,n,sum;
 int p[1000+1],w[1000+1];
 int gn,g;
 
  cin>>t;
  while(t--){
   
   sum=0;
   cin>>n;
   for(int i=0; i<n; i++){
    
    cin>>p[i];
    cin>>w[i];
   }
   
   cin>>gn;
   for(int j=0; j<gn; j++){
    cin>>g;
    sum+=knap(g,w,p,n);
   }
   
   cout<<sum<<'\n';
  }
 
 
 return 0;
}

UVa 562

#include<bits/stdc++.h>

using namespace std;

int knap(int W, int wt[], int val[], int n)
{
   int i, w;
   int K[n+1][W+1];
   for (i = 0; i <= n; i++)
   {
       for (w = 0; w <= W; w++)
       {
           if (i==0 || w==0)
               K[i][w] = 0;
           else if (wt[i-1] <= w)
                 K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]],  K[i-1][w]);
           else
                 K[i][w] = K[i-1][w];
       }
   }
 
   return K[n][W];
}

int main(){
 
 int t,n,w,d,ans,sum;
 
 while(cin>>t){
  
  while(t--){
   
   sum=0;
   cin>>n;
   int wt[100+1],val[100+1];
   memset(wt,0,101);
   memset(val,0,101);
   
   for(int i=0; i<n; i++){
    cin>>wt[i];
    val[i]=wt[i];
    sum+=wt[i];
   }
  
   w = sum/2;
   d = knap(w,wt,val,n);
   ans=sum - 2*d;
   cout<<ans<<'\n';
   
  }
 }
 
 return 0;
}

UVa 10664

#include<bits/stdc++.h>

using namespace std;

int knap(int W, int wt[], int val[], int n)
{
   int i, w;
   int K[n+1][W+1];
   for (i = 0; i <= n; i++)
   {
       for (w = 0; w <= W; w++)
       {
           if (i==0 || w==0)
               K[i][w] = 0;
           else if (wt[i-1] <= w)
                 K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]],  K[i-1][w]);
           else
                 K[i][w] = K[i-1][w];
       }
   }
 
   return K[n][W];
}


int main(){

 string n;
 int m,sum,d,w,ans;
 int wt[21],val[21];
 
  cin>>m;
  getchar();
  while(m--){
   
   
   getline(cin,n);
   int num;
   istringstream str(n);
   
   int i=0; sum=0;
   while(str >> num){
    sum+=num;
    wt[i]=val[i]=num;
    i++;
    
   }
   
  
   
   if(sum%2==1){
    cout<<"NO"<<'\n';
   }
   else {
    
    w= sum / 2;
    d= knap(w,wt,val,i);
    
    if(d==w) cout<<"YES"<<'\n';
    else cout<<"NO"<<'\n';

   }
   
   }

 return 0;
}

Tuesday, December 6, 2016

UVa 12555

#include<bits/stdc++.h>

using namespace std;

int main()
{
 int t,sz,a;
 int kase=1;
 double res;
 string inp;

 cin>>t;

 while(t--){
  
  res=0;
  cin>>a;
  cin>>inp;
  
  sz=inp.size();
  
  if(sz <= 4) res = a * .5;
  else res = (inp[3]-'0') * .05 + a * .5;
  
  cout<<"Case "<<kase<<": ";
  cout<<res<<endl;
  kase++;

 }

 return 0;

}

//translation chinese to english :D
//.5kg =  jin 
//.05 = two
// so "5 jin 2 two" consider it :)

Wednesday, November 16, 2016

UVa 10105

#include<bits/stdc++.h>

using namespace std;

int main()
{
 int n,k;
 int a[15];
 a[0]=1;

 for(int i=1; i<15; i++)
  a[i]=a[i-1]*i;

 while(cin>>n>>k)
 {
  int result=a[n];

  while(k--)
  {
   int x;
   cin>>x;
   result/=a[x];
  }

  cout<<result<<endl;
 }
 return 0;
}

UVa 494

#include<bits/stdc++.h>

using namespace std;

int main()
{
 string l,ll;

 while(getline(cin,l) && getline(cin,ll))
 {
  
  set<string>s1,s2;
  string num;
  istringstream str1(l.c_str());

  while(str1>>num)
  {
   s1.insert(num);
  }

  istringstream str2(ll.c_str());

  while(str2>>num)
  {
   s2.insert(num);
  }

  set<string>:: iterator it,ix;

  int ab=0;

  for(it=s1.begin(); it !=s1.end(); it++)
  {
   ix=s2.find(*it);
   if(ix!=s2.end()) ab++;
  }

  int ba=0;

  for(it=s2.begin(); it!=s2.end(); it++)
  {
   ix=s1.find(*it);
   if(ix!=s1.end()) ba++;
  }

   if(ab==0 && ba==0)  cout<<"A and B are disjoint"<<endl;
    else if(ab==ba && (ab==s1.size() && ba==s2.size()))  cout << "A equals B" << endl;
     else if(ab==s1.size() && (s1.size()<s2.size()))  cout << "A is a proper subset of B" << endl;
      else if(ba==s2.size() && (s2.size()<s1.size()))  cout << "B is a proper subset of A" << endl;
       else cout << "I'm confused!" << endl; 

 }

 return 0;
}

UVa 694

#include<bits/stdc++.h>
#define ll long long
#define kase(i) printf("Case %d: ",i)

using namespace std;

int main()
{
 ll a,b,c,i;
 int j=1;

 while(cin>>a>>b)
 {
  c=a;
  if(a<0 && b<0) break;

  for(i=1;;i++)
  {
   if(a==1) break;

   if(a%2==0) a=a/2;
   else a=3*a+1;

   if(a>b) break;
  }

  kase(j);
  cout<<"A = "<<c<<", Limit = "<<b<<", number of terms = "<<i<<endl;
  j++;

 }

 return 0;
}

Tuesday, November 8, 2016

UVa 11715

#include<bits/stdc++.h>

using namespace std;

int main() {
  int T;
  int c = 0;
  double u, v, t, a, s;

  while (cin >> T) {
    if (T == 0)
      break;

    c++;

    cout << "Case " << c << ": ";

    switch (T) {
      case 1:
        cin >> u >> v >> t;
        a = (v - u) / t;
        s = u * t + 0.5 * a * t * t;
        cout << setprecision(3) << fixed << s << " " << a << endl;
        break;
      case 2:
        cin >> u >> v >> a;
        t = (v - u) / a;
        s = u * t + 0.5 * a * t * t;
        cout << setprecision(3) << fixed  << s << " " << t << endl;
        break;
      case 3:
        cin >> u >> a >> s;
        t = (-u + sqrt(u * u + 2 * a * s)) / a;
        v = a * t + u;
        cout << setprecision(3) << fixed  << v << " " << t << endl;
        break;
      case 4:
        cin >> v >> a >> s;
        t = (-v + sqrt(v * v - 2 * a * s)) / -a;
        u = v - a * t;
        cout << setprecision(3) << fixed  << u << " " << t << endl;
        break;
    }
  }

  return 0;
}

Wednesday, November 2, 2016

UVa 1230

import java.util.Scanner;
import java.math.BigInteger;

class Main { 

  public static void main(String args[])
   {

    Scanner sc = new Scanner(System.in);
    int c = sc.nextInt();

    while (c-- > 0) {

         BigInteger x = BigInteger.valueOf(sc.nextInt()); 
         BigInteger y = BigInteger.valueOf(sc.nextInt()); 
         BigInteger n = BigInteger.valueOf(sc.nextInt()); 
         System.out.println(x.modPow(y, n)); 
   }
  } 
}

UVa 343

import java.io.*;
import java.util.*;
import java.math.*;

class Main{

  void sol()
  {
   Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));

    while(in.hasNext())
    {
      String a=in.next();
      String b=in.next();
      BigInteger b1,b2;
      boolean f=false;

       for(int i=2; i<=36; i++)
       {
        try{
         b1=new BigInteger(a,i);
         }

         catch(Exception e)
         {
          continue;
          }

          for(int j=2; j<=36; j++)
          {
           try{
            b2= new BigInteger(b,j);
           }
           catch(Exception e)
           {
            continue;
           }

           if(b1.compareTo(b2)==0){
            f=true;
            System.out.println(a + " (base " + i + ") = " + b + " (base " + j + ")");
            break;

           }

          }

          if(f) break;
        }
         if(!f) System.out.println(a + " is not equal to " + b + " in any base 2..36");


     }


   }


   public static void main(String args[])
   {
    Main uva343 = new Main();
    uva343.sol();
   }


 }

UVa 10302

#include<bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{ ll a[50005];
 a[1]=1;
 for(ll i=2; i<=50005; i++)
 {
  a[i]=a[i-1]+(i*i*i);
 }

 ll n;
 while(cin>>n)
 {
  cout<<a[n]<<endl;
 }
 return 0;
}

UVa 392

#include<bits/stdc++.h>
#define M 9

using namespace std;

int main()
{
 int a[M],fr,i;

    while(cin>>a[0])
    {
        for(i=1;i<M;i++)
            cin>>a[i];

        fr=8;
        for(i=0;i<M;i++)
            if(a[i]!=0)
                {
                    fr=i;
                    break;
                }

        if(fr==8)
            cout<<a[fr];
        else
        {
            if(a[fr]==-1)
                cout<<"-";
            else if(a[fr]==1)
                cout<<"";
            else
                cout<<a[fr];
            cout<<"x";

            if(fr!=7)
                cout<<"^"<<8-fr;

            for(i=fr+1;i<M;i++)
                if(a[i]!=0)
                    {
                        if(a[i]<0)
                            cout<<" - ";
                        else
                            cout<<" + ";

                        if((a[i]!=-1 && a[i]!=1) || i==8)
                            {

                                if(a[i]<0)
                                    cout<<a[i]*(-1);
                                else
                                    cout<<a[i];
                            }

                        if(i!=8)
                            cout<<"x";
                        if(i!=7 && i!=8)
                            cout<<"^"<<8-i;
                    }
        }
        cout<<endl;

}
 return 0;
}

Wednesday, October 26, 2016

UVa 913

#include<bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{

 long long N,x;

 while(cin>>N)
 {
  x = 2*(((N/2)+1)*((N/2)+1)) -3;
  cout<<3*x<<endl;
 }

 return 0;
}

Monday, October 24, 2016

UVa 10499

#include <bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{

 ll n,p;

 while(cin>>n)
 {
  if(n<0) break;
  p=(n*100)/4;
  if(n==1) cout<<0<<"%"<<endl;
  else cout<<p<<"%"<<endl;
 }

 return 0;
}

UVa 10170

#include<bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{
 ll s,d,n,i;

 while(cin>>s>>d)
 {
  n=0;
  for(i=s;;i++){

   n+=i;
   if(n>d || n==d) {
    cout<<i<<endl;
    break;
   }
  }
 }
 return 0;
}

UVa 12027

#include <bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{
 
 string a;
 while(cin>>a)
 {
  if(a=="0") break;
  int l,num;

  l=a.length();
  num=a[0]-'0';
  if(l>1 && l%2==0) num = num*10 + a[1]-'0';

  l = (l-1)/2;
  cout<<int(sqrt(num));

  for(int i=0; i<l; i++){
   cout<<0;
  }
  cout<<endl;
  
 }

 return 0;

}

Thursday, October 13, 2016

UVa 371 - Ackermann Functions

#include<bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{
 ll x, y;
 
 int j,k;
 
 while(cin>>x>>y)
 {
   if(x==0 || y==0) break;
   
   vector<ll>a;
   vector<ll>b;
   vector<ll>c;
   
  j=k=0;
  if(x>y) swap(x,y);
  
  for(ll i=x; i<=y; i++ )
  {
   
   ll ti=0;
   ll tn=i;
   
   if(i==1)
   {
    ti=3;
   }
   
   else {
    while(tn!=1)
   {
    if(tn%2==0){
      tn= tn/2;
      ti++;
    }
    else {
     tn=3*tn+1;
     ti++;
    }
   }
   }
   
   a.push_back(i);
   b.push_back(ti);
   c.push_back(ti);
   
  }
   sort(b.begin(),b.end());
  
   for(ll l=0; l<c.size(); l++)
   {
    if(b[b.size()-1]==c[l]) {
     
     cout<<"Between "<<x<<" and "<<y<<", "<<a[l];
     cout<<" generates the longest sequence of "<<b[b.size()-1]<<" values."<<endl;
     break;
    }
   }
 
 }
 return 0;
}