9Google AdSense

Showing posts with label ACM. Show all posts
Showing posts with label ACM. Show all posts

ACM Problem Solution 10696 - f91

problem

#include<stdio.h>

long int result(long int n)
{
  if(n<=100)
    return(result(result(n+11)));
  else if(n>=101)
    return(n-10);

}
int main()
{
long int n,x;
while(scanf("%ld",&n)==1)
{
    if(n==0)
        break;
    x=result(n);
    printf("f91(%ld) = %ld\n",n,x);

}
return 0;

}

ACM Problem Solution : 10035 Primary Arithmetic


problem
#include <stdio.h>
#include<string.h>>
int main() {
char a[100],b[100];
int lena,lenb,x,y,num1,num2,cry,sum,i,j;
while(scanf("%s%s",&a,&b)==2)
{
    if(a[0]=='0'&&b[0]=='0')
        break;
    lena=strlen(a);
    lenb=strlen(b);
    x=0;
    cry=0;
    for(i=lena-1,j=lenb-1;i>=0||j>=0;j--,i--)
    {
     if(i>=0)
     num1=a[i]-48;
    else num1=0;
    if(j>=0)
     num2=b[j]-48;
     else num2=0;
     sum=num1+num2+x;
        if(sum>9)
        {
        cry++;
        x=sum/10;

        }
        else x=0;
    }
    if(cry==0)
        printf("No carry operation.\n");
    else if(cry==1)
    printf("%d carry operation.\n",cry);

    else
    printf("%d carry operations.\n",cry);

}

return 0;

}

ACM Problem Solution : Ordering Tasks 10305

#include<stdio.h>

int vertex,indegree1[110],strtop[110];
int graph[110][110];
void topo(int vertex);

int main()
{


    int i,j,edge,p,x,y,kk,ff,rr,pp;
    while(scanf("%d%d",&vertex,&edge)==2)
    {
    if((vertex==0)&&(edge==0))
        break;
    for(ff=1;ff<=vertex;ff++)
        for(rr=1;rr<=vertex;rr++)
            graph[ff][rr]=0;
    for(i=1;i<=edge;i++)
    {
        scanf("%d%d",&x,&y);
        graph[x][y]=1;
    }
    for(kk=1;kk<=vertex;kk++)
    {    indegree1[kk]=0;
        strtop[kk]=0;
    }
    for(i=1;i<=vertex;i++)
        for(j=1;j<=vertex;j++)
            if(graph[j][i]==1)
                indegree1[i]++;
    topo(vertex);
    for(pp=1;pp<=vertex;pp++)
        printf("%d ",strtop[pp]);
    printf("\n");
    }
    return 0;
}
void topo(int vertex)
{
    int l,p,xx,node,top=0,d=0;
    for(l=1;l<=vertex;l++)
        if(indegree1[l]==0)
              strtop[++top]=l;
    while(d!=vertex)
    {
        node=strtop[++d];
        for(xx=1;xx<=vertex;xx++)
            if(graph[node][xx]==1)
            {
                indegree1[xx]=indegree1[xx]-1;
                if(indegree1[xx]==0)
                    strtop[++top]=xx;
            }


    }


}

ACM Problem Solution : How old are you? - 11219

View Code
View Problem
-------------------------------------------------------------------------------------

#include<cstdio>
#include<iostream>

using namespace std;

int main()
{
    int day,month,year,age,t,day1,month1,year1,i;
    char ch;
    scanf("%d",&t);
    i=0;
    while(t--)
    {
        i++;
        scanf("%d%c%d%c%d",&day,&ch,&month,&ch,&year);
        scanf("%d%c%d%c%d",&day1,&ch,&month1,&ch,&year1);
        age=year-year1;
        if((month1>month)||((month==month1)&&(day<day1)))
            age=age-1;
        if(age<0)
            cout<<"Case #"<<i<<":"<<" "<<"Invalid birth date"<<endl;
        else if(age>130)
            cout<<"Case #"<<i<<":"<<" "<<"Check birth date"<<endl;
        else
            cout<<"Case #"<<i<<":"<<" "<<age<<endl;
    }
    return 0;
} 


ACM Problem Solution : Generating Fast - 10098

View Problem
View Code
-------------------------------------------------------------------------------------------------
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

int main()
{
    int t,len;
    char ch;
    char str[10000];
    scanf("%d%c",&t,&ch);
    while(t--)
    {
        gets(str);
        len=strlen(str);
        sort(str,str+len);
        do
        {
            cout<<str<<endl;
        }while(next_permutation(str,str+len));
        cout<<endl;
    }
    return 0;
}

ACM Problem Solution : Pig-Latin - 492

#include<stdio.h>
#include<ctype.h>
int isvowel(char ch)
{
   int flag =0;
   if(ch=='a'|| ch=='A'||ch=='e'|| ch=='E'||ch=='i'|| 
         ch=='I'||ch=='u'|| ch=='U'||ch=='o'|| ch=='O')
       flag = 1;
   return flag;
} 
int main()
{
    char ch,save;
    int n;
    while(1)
    {
        n=scanf("%c",&ch);
        if(n!=1)
            break;
        if(isvowel(ch))
        {
            printf("%c",ch);
            while(1)
        {
                scanf("%c",&ch);
                if(!isalpha(ch))
                    break;
                printf("%c",ch);
            }    
            printf("ay%c",ch);
        }
        else if(isalpha(ch))
        {
              save=ch;
              while(1)
              {
                scanf("%c",&ch);
                if(!isalpha(ch))
                    break;
                printf("%c",ch);
              }
              printf("%cay%c",save,ch);
        }
        else
          printf("%c",ch);
    }
    return 0;
} 

ACM Problem Solution : ID Codes - 146


View Code
view Problem
----------------------------------------------------------------------------
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    char str[200];
    int len;
    while(gets(str)!=NULL)
    {
        if(str[0]=='#')
                 break;
        len=strlen(str);
       if(next_permutation(str,str+len)==1)
              printf("%s\n",str);
       else
             printf("No Successor\n");
   }
  return 0;
}

12554 - A Special "Happy Birthday" Song!!!

View Problem
View Code
---------------------------------------------------------------------
#include<stdio.h>
int main()
{
   int t,tt,k,p,ll,h,hh,se,st;
   char happy[20][100]={"Happy","birthday","to","you","Happy","birthday","to",
       "you","Happy","birthday","to","Rujia","Happy","birthday","to","you"};
   char inp[200][200],ch;
   scanf("%d%c",&t,&ch);
   for(k=0;k<t;k++)
          gets(inp[k]);
   if(t<16)
   {      for(p=0,ll=0;p<16;p++,ll++)
      {
        if(ll==t)
           ll=0;
         printf("%s: %s\n",inp[ll],happy[p]);
      }   }
   else
   {
      for(h=0,hh=0;h<t;h++,hh++)
      {       if(hh>15)
        hh=0;
        printf("%s: %s\n",inp[h],happy[hh]);
      }
      if(hh!=0)
      {
         for(st=hh,se=0;st<16;st++,se++)
         printf("%s: %s\n",inp[se],happy[st]);
      }
   }
   return 0;
}

424 - Integer Inquiry

View Code
View Problem
---------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define MAX 300
void rev(char *from,char *to)
{
    int len,i;
    len=strlen(from);
    for(i=0;i<len;i++)
    to[i]=from[len-i-1];
    to[len]='\0';
}
void add(char *first,char *sec,char *result)
{
    char F[MAX],S[MAX],R[MAX];
    int flen,slen,now,extra,sum;
    flen=strlen(first);
    slen=strlen(sec);
    rev(first,F);
    rev(sec,S);
    for(now=0,extra=0;(now<flen&&now<slen);now++)
    {
    sum=(F[now]-'0')+(S[now]-'0')+extra;
    R[now]=sum%10+'0';
    extra=sum/10;
    }
    for(;now<flen;now++)
    {
     sum=F[now]+extra-'0';
    R[now]=sum%10+'0';
    extra=sum/10;
    }
     for(;now<slen;now++)
    {
     sum=S[now]+extra-'0';
    R[now]=sum%10+'0';
    extra=sum/10;
    }
    if(extra!=0)
    R[now++]=extra+'0';
    R[now]='\0';
   if(strlen(R)==0)
    strcpy(R,"0");
    rev(R,result);
}
int main()
{
    static char f[MAX],s[MAX],r[MAX];
    int i,len,t=0;
    while(gets(f)!=NULL)
    {
    if(t==0)
    {
           t++;
           strcpy(s,f);
    }
    else if(f[0]=='0')
          break;
    else{
         add(f,s,r);
         strcpy(s,r);
          }
    }
    len=strlen(r);
    for(i=0;i<len;i++)
        printf("%c",r[i]);
    printf("\n");
    return 0;
}

10931 - Parity

View Problem
View Code

#include<stdio.h>



int main()
{
    long long int num,count,i,s,x,l;
    char  str[200000];
    long long int value[200000];
    while(scanf("%lld",&num)==1)
    {
    if(num==0)
        break;
     if(num==1)
           printf("The parity of 1 is 1 (mod 2).\n");
       else{
    count=0;
    i=0;
    while(num!=0)
    {
        if(num%2==1)
        count++;
        s=num/2;
        value[i++]=num%2;
        num=s;

    }
    x=0;
    for(l=i-1;l>=0;l--)
         str[x++]=value[l]+'0';
       str[x]='\0';
        printf("The parity of %s is %lld (mod 2).\n",str,count);
       }
    }
    return 0;
}

713 Adding Reversed Numbers

View Code
View Problem
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>

#define MAX 300


void reverse(char *fnum,char *snum)
{
    int len,i;
    len=strlen(fnum);
    for(i=0;i<len;i++)
    snum[i]=fnum[len-i-1];
    snum[len]='\0';
}

void add(char *first,char *sec,char *result)
{
    char F[MAX],S[MAX],R[MAX];
    int flen,slen,now,extra,sum;
    flen=strlen(first);
    slen=strlen(sec);
    reverse(first,F);
    reverse(sec,S);
    for(now=0,extra=0;(now<flen&&now<slen);now++)
    {
    sum=(F[now]-'0')+(S[now]-'0')+extra;
    R[now]=sum%10+'0';
    extra=sum/10;
    }
    for(;now<flen;now++)
    {
     sum=F[now]+extra-'0';
    R[now]=sum%10+'0';
    extra=sum/10;

    }

     for(;now<slen;now++)
    {
     sum=S[now]+extra-'0';
    R[now]=sum%10+'0';
    extra=sum/10;

    }
    if(extra!=0)
    R[now++]=extra+'0';
    R[now]='\0';
    if(strlen(R)==0)
    strcpy(R,"0");
    reverse(R,result);

}

int main()
{
    char f[MAX],s[MAX],r[MAX],f1[MAX],s1[MAX];
    int i,len,t,flag;
    scanf("%d",&t);
    while(t--)
    {
    scanf("%s%s",&f1,&s1);
    reverse(f1,f);
    reverse(s1,s);
    add(f,s,r);
    len=strlen(r);
    flag=0;
    for(i=len-1;i>=0;i--)
    {
        if((r[i]==48)&&(flag==0));
        else
       {printf("%c",r[i]);
        flag=1;
       }
    }
    printf("\n");

    }
    return 0;
}

12478 - Hardest Problem Ever (Easy)

#include<stdio.h>
int main()
{
    printf("KABIR\n");
    return 0;
}

ACM Problem Solution : 575 Skew Binary

View Code
-------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    char str[20000];
    long long int i,sum,len,n,power,j;
    while(gets(str)!=NULL)
    {
    if(str[0]=='0')
        break;
    else
    {
        len=strlen(str);
        sum=0;
        for(i=len,j=0;i>=1;i--,j++)
        {
          if(str[j]!='0')
          {
          power=(pow(2,i)-1);
          sum=sum+((str[j]-'0')*power);
          }
       }
    printf("%lld\n",sum);
    }
    }
    return 0;
}

ACM Problem Solution : 12527 - Different Digits

#include<stdio.h>

#include<string.h>



int main()

{

    int i,j,n,m,count,value,a,b,num[12],k,l,f,flag,s;

    while(scanf("%d%d",&n,&m)==2)

    {

        count=0;

        for(i=n;i<=m;i++)

          {

             value=i;

             flag=0;

             for(s=0;s<=9;s++)

            num[s]=0;

             while(value!=0)

             {

            a=value%10;

            b=value/10;

            value=b;

            if(num[a]==0)

                num[a]=1;

            else if(num[a]==1)

            {      flag=1;

                break;

            }

             }

            if(flag!=1)

                count++;



          }

          printf("%d\n",count);

    }

    return 0;

}

ACM Problem Solution : 12543 Longest Word

#include<stdio.h>
#include<string.h>


int main()
{
    int i,j,k,l,len,max=0,kk,t;
    char str[2000],ary[2000],maxstr[2000];
     //    freopen("F:\\a.txt","r",stdin);
    while(scanf("%s",&str)==1)
    {
        if((str[0]=='E')&&(str[0]=='-')&&(str[0]=='N')&&(str[0]=='-')&&(str[0]=='D'))
            break;
        l=strlen(str);
        kk=0;
        for(j=0;j<l;j++)
        {
             if((str[j]>='A')&&(str[j]<='Z'))
                ary[kk++]=str[j]+32;
             else if((str[j]>='a')&&(str[j]<='z'))
                ary[kk++]=str[j];
             else if(str[j]=='-')
                ary[kk++]=str[j];

        }
        ary[kk]='\0';
        len=strlen(ary);
        if(max<len)
        {    max=len;
            for(t=0;t<kk;t++)
                maxstr[t]=ary[t];
            maxstr[t]='\0';
        }

    }
    printf("%s\n",maxstr);
return 0;
}

12376

#include<stdio.h>

void findans(long int u);
long int j,adj[1000][1000],n,m,k,lp,total,test,t1,i,max=0,node;
long int LU[100002];
int main()
{
  // int test,t1;
//  freopen("F:\\a.txt","r",stdin);
    scanf("%ld",&test);
    for(t1=1;t1<=test;t1++)
    {
    total=0;
    node=0;
    scanf("%ld%ld",&n,&m);
    for(lp=0;lp<n;lp++)
    scanf("%ld",&LU[lp]);
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
    {
        adj[i][j]=0;

    }

}

    for(k=0;k<m;k++)
    {
        scanf("%ld%ld",&i,&j);
        adj[i][j]=1;
    }

     findans(0);
     }
    return 0;

}

void findans(long int u)
{
    int ii,str;
    max=0;
    for(ii=0;ii<n;ii++)
    {
        if(adj[u][ii]==1)
        {
          if(LU[max]<LU[ii])
        max=ii;
        }
    }
    if(max!=0)
        node=max;
    if(max==0)
    {
        printf("Case %ld: ",t1);
        printf("%ld %ld\n",total,node);
        return;


    }
    total=total+LU[max];
    findans(max);
}

ACM Problem Solution : 10945 - Mother bear

#include<stdio.h>
#include<string.h>

int main()
{
       char str[10000],ary[10000];
       int len,i,j,k,l,f;
      // freopen("F:\\a.txt","r",stdin);
       while(gets(str)!=NULL)
       {
        len=strlen(str);
        if((len==4)&&(str[0]=='D')&&(str[1]=='O')&&(str[2]=='N')&&(str[3]=='E'))
            break;
        k=0;
        for(i=0;i<len;i++)
        {
          if((str[i]>='a')&&(str[i]<='z'))
            ary[k++]=str[i];
          else if((str[i]>='A')&&(str[i]<='Z'))
            ary[k++]=str[i]+32;

        }
        ary[k]='\0';
        f=0;
        for(j=0,l=k-1;(j<len&&l>=0);j++,l--)
        {
            if(ary[j]!=ary[l])
            {
                f=1;
                break;
            }

        }
        if(f==1)
            printf("Uh oh..\n");
        else
            printf("You won't be eaten!\n");
       }
       return 0;

}

ACM Problem Solution : 11479 - Is this the easiest problem?

#include<stdio.h>
#include<stdlib.h>


int main()
{
    long long int t,p,x,y,z,k,max,small,mid,l,f;
    scanf("%lld",&t);
    for(p=1;p<=t;p++)
    {
           scanf("%lld%lld%lld",&x,&y,&z);
           small=y-z;
           if(small<0)
        small=-small;
           max=y+z;
           if(max<0)
        max=-max;
        f=0;
        if((small<x)&&(x<max))
            f=1;
        if((x==y)&&(x==z)&&(f==1))
            printf("Case %lld: Equilateral\n",p);

        else if(((x==y)||(y==z)||(x==z))&&(f==1))
            printf("Case %lld: Isosceles\n",p);

        else if(((x!=y)&&(y!=z)&&(x!=z))&&(f==1))
            printf("Case %lld: Scalene\n",p);
        else
            printf("Case %lld: Invalid\n",p);
    }

    return 0;
}

ACM Problem Solution : 11878 - Homework Checker

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{

    int a,b,c,count=0,len,p,n,l1,q,n1;
    char ch1,ch2;
    char r[2000];
    while(scanf("%d%c%d%c%s",&a,&ch1,&b,&ch2,&r)==5)
    {
         n=0;
         if((r[0]>='0')&&(r[0]<='9'))
         {
        len=strlen(r);
        q=0;
        n=0;
        for(l1=len-1;l1>=0;l1--)
        {
          n1=(r[l1]-48);
          n=n+(n1*pow(10,q++));
        }

        if(ch1=='+')
         {
         if(a+b==n)
             count++;

         }
         if(ch1=='-')
         {
        if(a-b==n)
            count++;

         }
         }
         else ;
    }
    printf("%d\n",count);
    return 0;
}

ACM Problem Solution : 12243 - Flowers Flourish from France

#include<stdio.h>
#include<string.h>

int main()
{
   char str[2000],store;
   int i,j,k,len,f,count;
   while(gets(str)!=NULL)
   { f=0;
     if(((str[0]>='a')&&(str[0]<='z'))||((str[0]>='A')&&(str[0]<='Z')))
     {
       len=strlen(str);
       store=str[0];
       count=0;
       for(j=0;j<len;j++)
       {
        if(str[j]==32)
            count=count+1;
       }
       for(i=1;i<len;i++)
       {
     if(str[i-1]==32)
     {
        if((store==str[i])||((store-32)==str[i])||((store+32)==str[i]))
        {
        f=1;
        }
        else
        {    f=0;
        break;
        }
     }
       }
       if((f==0)&&(count>0))
    printf("N\n");
       else
    printf("Y\n");
     }
     else
    break;

   }
   return 0;
}