您的位置:首页 > 其它

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

2013-04-15 22:02 246 查看
水题不水,有很多做过的题目,但是还是出了很多错误,其中里面有几道题目,需要长整型,没有注意,然后里面有一两道题目需要判断素数,但是也没有注意,需要用素数打表的没有打表,不需要的却用了(水题不水的其中一道题目),总结:需要注意积累水题,但是绝对不是什么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
);
}
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
);
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
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息