14 Mar 2013

Money Transformation_solved


/*

CODECHEF
PROBLEM CODE : MONTRANS
*/

#include<stdio.h>
 
int T,a,b,c;
void solve()
{
    int step=0,cnt=0;
    int m=a*100+b;
    while((a>0||b>=c)&&cnt<10000){
        cnt++;
        if(b<c)a--,b+=100;
        b-=c;
        int tmp=a;a=b;b=tmp;
        int t=a*100+b;
        if(t>m)m=t,step=cnt;
    }
    printf("%d\n",step);
}
int main()
{
    scanf("%d",&T);
    while(T--){
        scanf("%d%d%d",&a,&b,&c);
        solve();
    }
    return 0;
}
        

Categories: , , ,

Jurassic Park_solved


/*
CODECHEF
Problem code: NI01

*/


#include<stdio.h>
#include<stdlib.h>
int n[100002];
int main()
 {
    int t,p,r,k,i,m,q,l,c;
    scanf("%d",&t);
    while(t--) 
     {
       scanf("%d%d%d%d%d%d",&n[0],&m,&q,&p,&r,&k);
       l=0;
       for(i=0;i<=k;i++)
         {
           if(m&&i&&!(i%r)) 
             {
               m--;
               q++;
             }
           if(n[i]&&q) 
             {
               c = n[i]<q ? n[i] : q;
               n[i]-=c;
               q-=c;
               if((i+p)<=k) 
                 {
                  n[i+p]+=c;
                  l+=c;
                 }
             }
           n[i+1]+=n[i];
        }
     printf("%d %d %d %d\n",n[k],l,m,q);
    if(t) memset(n,0,4*(k+2));
   }
  return 0;
} 
 
 

Categories: , , ,

Lucky Number_solved


/*

CODECHEF
PROBLEM CODE :  LUCKY2

*/

#include <stdio.h>
#include <string.h>
 
#define siz 1005
 
int len;
int q[siz][siz][4];
char A[siz], B[siz];
 
char S(int x)
{
if(!x) return 0;
for(;x%10==7||x%10==4; x/=10);
return !x;
}
 
int T(int i, int p, int s)
{
int j, res=0, ob;
if(i==-1) return S(p);
if(q[i][p][s]!=-1) return q[i][p][s];
for(j=(s&2)?-1:A[i]-1,ob=(s&1)?9:B[i]; ++j<=ob; res=(res+T(i-1,p+(j==7||j==4),s|(j<B[i])|((j>A[i])<<1)))%1000000007);
return q[i][p][s]=res;
}
 
main()
{
int fall, x, i, j;
char L[siz], U[siz];
for(i=-1; ++i<siz;)
 for(j=-1; ++j<siz; q[i][j][3]=-1);
for(scanf("%d",&fall); fall--; printf("%d\n",T(len-1,0,0)))
 {
 for(i=-!!scanf("%s %s",L,U),len=strlen(U),x=strlen(L); ++i<len; A[i]=B[i]=0);
 for(i=0,j=len-1; i<len; B[j--]=U[i++]-'0');
 for(i=x-1,j=0; i>=0; A[i--]=L[j++]-'0');
 for(i=-1; ++i<=len;)
  for(j=-1; ++j<=len; q[i][j][0]=q[i][j][1]=q[i][j][2]=-1);
 }
return 0;
} 

Categories: , , ,

Fire Escape Routes_solved


/*
CODECHEF
Problem codeFIRESC


*/



#include<stdio.h>
 
inline int min(int a,int b)
{
 if (a<b)
  return a;
 else
  return b;
}
 
int t,n,m,x,y,i,j,id[100002],sz[100002],count,ng;
 
int find(int p) 
{
 while (p != id[p])
     p = id[p];
 return p;
}
 
int connected(int p, int q) 
{
 if(find(p) == find(q))
  return 1;
 else
  return 0;
}
 
void uni(int p, int q) 
{
 int i = find(p);
  int j = find(q);
   if(i == j) 
    return;
    if(sz[i] < sz[j]) 
 { 
  id[i] = j; 
  sz[j] += sz[i]; 
  sz[i]=1;
 }
    else
 {
  id[j] = i; 
  sz[i] += sz[j]; 
  sz[j]=1;
 }
  count--;
}
 
int main()
{ 
 unsigned long long r;
 scanf("%d",&t);
 while(t--)
 {
  int h[100002]={0},c=0;
  ng=0;
  r=1;
  scanf("%d%d",&n,&m);
  count=n;
  for(i=1;i<=n;i++)
  {
   id[i] = i;
   sz[i] = 1;
  }
  for(i=0;i<m;i++)
  {
   scanf("%d%d",&x,&y);
   uni(x,y);
   if(h[x]==0)
   {
    c++;
    h[x]=1;
   }
   if(h[y]==0)
   {
    c++;
    h[y]=1;
   }
  }
  for(i=1;i<=n;i++)
   if(sz[i]>1)
   {
    r = (r*sz[i])%1000000007;
    ng++;
   }
  printf("%d %llu\n",ng+n-c,r);
 }
 return 0;
}  

Categories: , , ,

Transpose matrix


/*

program to find a transpose of a matrix.....

*/


#include <stdio.h>
int main()
{
    int a[10][10], trans[10][10], r, c, i, j;
    printf("Enter rows and column of matrix: ");
    scanf("%d %d", &r, &c);

/* Storing element of matrix entered by user in array a[][]. */
    printf("\nEnter elements of matrix:\n");
    for(i=0; i<r; ++i)
    for(j=0; j<c; ++j)
    {
        printf("Enter elements a%d%d: ",i+1,j+1);
        scanf("%d",&a[i][j]);
    }
/* Displaying the matrix a[][] */
    printf("\nEntered Matrix: \n");
    for(i=0; i<r; ++i)
    for(j=0; j<c; ++j)
    {
        printf("%d  ",a[i][j]);
        if(j==c-1)
            printf("\n\n");
    }

/* Finding transpose of matrix a[][] and storing it in array trans[][]. */
    for(i=0; i<r; ++i)
    for(j=0; j<c; ++j)
    {
       trans[j][i]=a[i][j];
    }

/* Displaying the transpose,i.e, Displaying array trans[][]. */
    printf("\nTranspose of Matrix:\n");
    for(i=0; i<c; ++i)
    for(j=0; j<r; ++j)
    {
        printf("%d  ",trans[i][j]);
        if(j==r-1)
            printf("\n\n");
    }
    return 0;
}

Categories: , ,

Copyright © UPgradeCODING | Powered by Blogger