Saturday, 5 May 2012

UVa 138 Street Numbers Solution

#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define fill(a,v) memset(a,v,sizeof(a))
#define PB push_back
#define pi acos(-1.0)
#define eps 1e-9


int main()
{
    long long n,x=8,tc=0;
    double n2;
    while(true)
    {
        n2=sqrt((x*x+x)/2);
        n=n2;
        if(n==n2)
        {
            printf("%10lld%10lld\n",n,x);
            tc++;
        }
        if(tc==10)
        break;
        x++;
    }
return 0;
}

UVa 113 Power of Cryptography Solution

#include<stdio.h>
#include<math.h>
int main()
{
double n,p;
double ans;
while(scanf("%lf%lf",&n,&p)==2)
{
ans=pow(p,1/n);
printf("%.0lf\n",ans);
}
return 0;
}

UVa 111 History Grading Solution

#include<iostream>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
int n,fix[100],test[100],arr[100][100],i,j,fixf[100],testf[100];
int main()
{
    map<int,int>fix;
    map<int,int>test;
    cin>>n;
    for(i=0;i<n;i++)
        {
            cin>>fixf[i];
            fix[fixf[i]]=i;
        }

    while(cin>>testf[0])
    {
        test[testf[0]]=0;
        for(i=1;i<n;i++)
        {
            cin>>testf[i];
            test[testf[i]]=i;
        }
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
            {
                if(fix[i]==test[j])
                arr[i][j]=arr[i-1][j-1]+1;
                else
                arr[i][j]=max(arr[i][j-1],arr[i-1][j]);
            }
        cout<<arr[n][n]<<endl;
        memset(arr,0,sizeof(arr));
    }
return 0;
}

UVa 108 Maximum Sum Solution

#include<iostream>
#include<list>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define PB push_back
#define pi acos(-1.0)
#define eps 1e-9
long sum[120][120];

int main()
{
int n,a,b,c,d,arr[120][120];
long max,temp;
while(cin>>n)
        {
            max=0;
            for(a=1;a<=n;a++)
                for(b=1;b<=n;b++)
                    cin>>arr[a][b];

            for(a=1;a<=n;a++)
                for(b=1;b<=n;b++)
                    for(c=1;c<=a;c++)
                        for(d=1;d<=b;d++)
                            sum[a][b]+=arr[c][d];

            for(a=0;a<=n;a++)
                for(b=0;b<=n;b++)
                    for(c=0;c<=a;c++)
                        for(d=0;d<=b;d++)
                            {
                                temp=sum[a][b]-sum[a][d]-sum[c][b]+sum[c][d];
                                if(temp>max)
                                max=temp;
                            }
            cout<<max<<endl;
            clr(sum);
        }
return 0;
}

UVa 100 The 3n + 1 problem Solution

#include<stdio.h>
int main()
{
int n,m,i,o,j,ans,sum;
while(scanf("%d%d",&n,&m)==2 && m>0 && n>0)
{
sum=0;
printf("%d %d ",n,m);
if(n>m)
{o=m;
m=n;
n=o;}
for(i=n;i<=m;i++)
    {
    ans=1;
    for(j=i;j!=1;j=j)
        {
        if(j%2==0)
        j=j/2;
        else
        j=3*j+1;
        ans=ans+1;
        }
    if(ans>=sum)
    sum=ans;
    }
printf("%d\n",sum);
}
return 0;
}