湖南工业大学个人选拔赛第三场 解题报告(自己的)

水题不水,有很多做过的题目,但是还是出了很多错误,其中里面有几道题目,需要长整型,没有注意,然后里面有一两道题目需要判断素数,但是也没有注意,需要用素数打表的没有打表,不需要的却用了(水题不水的其中一道题目),总结:需要注意积累水题,但是绝对不是什么A+B,而是一些比较好的水题,要多训练

A -Probability

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
    int i,s,sum;
    double c;
    char a[2],b[201];
    while(scanf("%s %s",a,b)!=EOF)
    {
        if(a[0]>='A'&&a[0]<='Z')
            a[0]=tolower(a[0]);
        s=strlen(b);    
        sum=0;
        for(i=0;i<s;i++)
        {
            if(b[i]>='A'&&b[i]<='Z')
            b[i]=tolower(b[i]);
            if(b[i]==a[0])
                sum++;
        }
        c=(double)sum/s;
        printf("%.5f\n",c);
    }
}


B -An easy problem

// File Name: hut3b.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 18时59分35秒

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;
//const int maxn=100010;
//int sum[maxn];
int main()
{   
	__int64 sum[100001]; 
	__int64 n,i; 
   sum[0]=0;   
 for(i=1;i<=100000;i++)
     {         
  if(i%3==0)       
       sum[i]=sum[i-1]+i*i*i;         
else          
     sum[i]=sum[i-1]+i;             
}   
 while(scanf("%I64d",&n)!=EOF&&n>=0)  
  {         
printf("%I64d\n",sum[n]);  
   }    
  return 0;
}


C -What day is it

#include <stdio.h>

int b[20] = {0,31,28,31,30,31,30,31,31,30,31,30,31,0};
int Y = 1, M = 1, D = 1;
int leap(int y)
{
    if(y%400 == 0 || (y%4 == 0 && y%100!=0))
        return 1;
    return 0;
}

int main()
{
    int y,m,d,i;
    while(~scanf("%d%d%d",&y,&m,&d))
    {
        if(leap(y))
            b[2] = 29;
        else
            b[2] = 28;
        if(d > b[m] || d < 1 || m < 1 || m > 12 || y <1 || y>10000)
        {
            printf("illegal\n");
            continue;
        }
        int sum = 0;
        sum+=d;
        for(i = 0; i<m; i++)
            sum+=b[i];
        sum%=7;
        for(i = 1; i<y; i++)
        {
            sum+=365;
            if(leap(i))
                sum++;
            sum%=7;
        }
        int  dx = sum%7;
        if(dx==0)
            printf("Sunday\n");
        else if(dx == 1)
            printf("Monday\n");
        else if(dx == 2)
            printf("Tuesday\n");
        else if(dx == 3)
            printf("Wednesday\n");
        else if(dx == 4)
            printf("Thursday\n");
        else if(dx == 5)
            printf("Friday\n");
        else if(dx == 6)
            printf("Saturday\n");
    }
    return 0;
}


D -Cuts the cake

// File Name: hut3d.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 20时53分55秒

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;

int main()
{
	double r,r1,r2;
	while(~scanf("%lf",&r))
	{
		if(r<=0.0)
			break;
		printf("%.3lf %.3lf\n",sqrt(r*r/3),sqrt(r*r*2/3));
	}
return 0;
}


E -Rolling table

// File Name: hut3e.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 21时24分15秒
#include<iostream>
#include<stdio.h>
using namespace std;
char a[12][12];
int main()
{
	int n,m,i,j,N=0;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		getchar();
		N=m%4;
		for(i=0;i<n;i++)
		{
			for(j=0;j<n;j++)
				scanf("%c",&a[i][j]);
			getchar();
		}
		if(N==0)
		{
			for(i=0;i<n;i++)
			{
				for(j=0;j<n;j++)
					printf("%c",a[i][j]);
				printf("\n");
			}
		}
		else if((N==1)||(N==-3))
		{
			for(i=0;i<n;i++)
			{
				for(j=n-1;j>=0;j--)
					printf("%c",a[j][i]);
				printf("\n");
			}
		}
		else if((N==2)||(N==-2))
		{
			for(i=n-1;i>=0;i--)
			{
				for(j=n-1;j>=0;j--)
					printf("%c",a[i][j]);
				printf("\n");
			}
		}
		else if((N==-1)||(N==3))
		{
			for(i=n-1;i>=0;i--)
			{
				for(j=0;j<n;j++)
					printf("%c",a[j][i]);
				printf("\n");
			}
		}
	}
	return 0;
}


F -Largest prime factor

// File Name: hut3f.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 20时25分15秒
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <utility>
#include <queue>
#define MAX 1000000
using namespace std;

int lpf[MAX];

int main(){
    int n,cnt,i,j;
    memset(lpf,0,sizeof(lpf));
    lpf[2]=1;
    for(i=4;i<MAX;i+=2)
        lpf[i]=lpf[2];
    cnt=2;
    for(i=3;i<MAX;i+=2){
        if(lpf[i])
            continue;
        lpf[i]=cnt++;
        for(j=(i<<1);j<MAX;j+=i)
            lpf[j]=lpf[i];
    }
    while(~scanf("%d",&n))
        printf("%d\n",lpf[n]);
    return 0;
}


G -circumgyrate the string

// File Name: hut3g.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 20时04分08秒
#include <stdio.h>
#include <string.h>

int main()
{
    char str[100];
    int len,i,n,j;
    while(~scanf("%s%d",str,&n))
    {
        if(n>=8)
        {
            n = n%8;
        }
        else if(n<0)
        {
            n = n%8;
            n = n+8;
            n = n%8;
        }
        len = strlen(str);
        if(n == 0)
            puts(str);
        else if(n == 1)
        {
            for(i = len-1; i>=0; i--)
            {
                for(j = 0; j<len; j++)
                {
                    if(j == i)
                    {
                        printf("%c\n",str[j]);
                        break;
                    }
                    else
                        printf(" ");
                }
            }
        }
        else if(n == 2)
        {
            for(i = len-1; i>=0; i--)
            {
                for(j = 0; j<=len/2; j++)
                {
                    if(j == len/2)
                    {
                        printf("%c\n",str[i]);
                        break;
                    }
                    else
                        printf(" ");
                }
            }
        }
        else if(n == 3)
        {
            for(i = 0; i<len; i++)
            {
                for(j = 0; j<len; j++)
                {
                    if(j == i)
                    {
                        printf("%c\n",str[len-1-i]);
                        break;
                    }
                    else
                        printf(" ");
                }
            }
        }
        else if(n == 4)
        {
            for(i = len-1; i>=0; i--)
            {
                putchar(str[i]);
            }
            printf("\n");
        }
        else if(n == 5)
        {
            for(i = 0; i<len; i++)
            {
                for(j = len-1; j>=0; j--)
                {
                    if(j == i)
                    {
                        printf("%c\n",str[i]);
                        break;
                    }
                    else
                        printf(" ");
                }
            }
        }
        else if(n == 6)
        {
            for(i = 0; i<len; i++)
            {
                for(j = 0; j<=len/2; j++)
                {
                    if(j == len/2)
                    {
                        printf("%c\n",str[i]);
                        break;
                    }
                    else
                        printf(" ");
                }
            }
        }
         else if(n == 7)
        {
            for(i = 0; i<len; i++)
            {
                for(j = 0; j<len; j++)
                {
                    if(j == i)
                    {
                        printf("%c\n",str[i]);
                        break;
                    }
                    else
                        printf(" ");
                }
            }
        }
    }
    return 0;
}


H -How many prime numbers

// File Name: hut3h.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 19时35分36秒
#include<iostream>
#include<math.h>
#include<stdio.h>
using namespace std;
#define N 100000000
int main()
{
	int n,b,sum,flag,i;
	while(scanf("%d",&n)!=EOF)
	{
        sum=0;
		while(n--)
		{
			scanf("%d",&b);
			flag=0;
			for(i=2;i<=sqrt(b*1.0);i++)
				if(b%i==0)
				{flag=1;break;}
				if(!flag)
					sum++;
		}
		printf("%d\n",sum);
	}
	return 0;
}


I -Calculate the formula

// File Name: hut3i.cpp
// Author: rudolf
// Created Time: 2013年04月15日 星期一 19时13分59秒

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;
const int maxn=100010;
__int64 sum[maxn];
int main()
{
	int n;
	sum[1]=0;
		for(int i=1;i<=maxn;i+=2)
		{
			sum[i]+=sum[i-2]+i*i;
		//	cout<<sum[i]<<endl;
		}
		while(scanf("%d",&n)!=EOF)
		{
			printf("%I64d\n",sum[n]);
		}
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值