您的位置:首页 > 其它

再大的洪水也阻挡不了我们刷题的热情···(Orz)

2017-07-05 17:14 253 查看
Solved 16 / 20 A POJ 1005 I Think I Need a Houseboat

Solved 25 / 26 B HDU 2021 发工资咯:)

Solved 22 / 36 C HDU 2022 海选女主角

Solved 18 / 67 D HDU 2023 求平均成绩

Solved 16 / 36 E HDU 2024 C语言合法标识符

Solved 17 / 18 F HDU 2025 查找最大元素

Solved 17 / 19 G HDU 2026 首字母变大写

Solved 16 / 31 H HDU 2027 统计元音

Solved 13 / 35 I HDU 2028 Lowest Common Multiple Plus

Solved 16 / 26 J HDU 2029 Palindromes _easy version

Solved 14 / 16 K HDU 2030 汉字统计

Solved 12 / 22 L HDU 2031 进制转换

Solved 13 / 27 M HDU 2032 杨辉三角

Solved 16 / 16 N HDU 2033 人见人爱A+B

Solved 10 / 29 O HDU 2034 人见人爱A-B

Solved 14 / 15 P HDU 2035 人见人爱A^B

Solved 9 / 16 Q HDU 2036 改革春风吹满地

Solved 11 / 12 R HDU 2037 今年暑假不AC

Solved 12 / 23 S HDU 2046 骨牌铺方格

Solved 14 / 29 T HDU 2039 三角形

Solved 12 / 13 U HDU 2040 亲和数

Solved 15 / 16 V HDU 2041 超级楼梯

Solved 13 / 13 W HDU 2042 不容易系列之二

Solved 13 / 21 X HDU 2043 密码

Solved 13 / 25 Y HDU 2044 一只小蜜蜂…

1:

描述:Fred Mapper正考虑在路易斯安那州买一些土地来建房子。在调查土地的过程中,他发现

由于密西西比河的腐蚀,路易斯安那州的面积正以每年50平方米的速度减少 。因为Fred想在这个房子度过他的余生,所以他需要知道他的土地是否将被腐蚀。

经过更多的调查,Fred已经知道了土地将以半圆的形式腐蚀,半圆的中心在坐标(0,0)以x轴为分隔线,

x轴以下的区域在水中 ,在第一年开始时没有被腐蚀的土地。(半圆在下图中给出)

输入:在输入的第一行将有一个正整数(N),表示将有N个数据。在接下去的N行将包含Fred所考虑的土地的X和Y坐标。

所给浮点数以米为单位。Y坐标为非负的,坐标(0,0)不会被给出。

输出:对于每个数据将对应有一行输出,格式为 “Property N: This property will begin eroding in year Z.”这里的N为数据序号(从1开始),Z是将被腐蚀的那一年,且Z是个整数,在输出最后一行要输出 “END OF OUTPUT.”

输入样例:

2

1.0 1.0

25.0 0.0

输出样例:

Property 1: This property will begin eroding in year 1.

Property 2: This property will begin eroding in year 20.

END OF OUTPUT.

#include <stdio.h>
#include <math.h>
int main ()
{
int n,i,c;
float a,b;
while (scanf ("%d",&n)!=EOF)
{
for (i=1;i<=n;i++)
{
scanf ("%f%f",&a,&b);
c=(int)(acos (-1)*(a*a+b*b)/100.0);
printf ("Property %d: This property will begin eroding in year %d.\n",i,c+1);
}
printf ("END OF OUTPUT.\n");
}

return 0;
}


2:(DP凑硬币问题)

作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵

但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?

这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。

Input

输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。

n=0表示输入的结束,不做处理。

Output

对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。

Sample Input
3

1 2 3

0

Sample Output

4

#include<stdio.h>
int main()
{
int n,i,t1,t2,t3,t4,t5,t6,sum;
int a[100],s[100];
while(scanf("%d",&n)&&n!=0)
{
sum=0;
for(i=0;i<n;i++)
{
t1=0,t2=0,t3=0,t4=0,t5=0,t6=0;
scanf("%d",&a[i]);
t1=a[i]/100;
t2=a[i]%100/50;
t3=a[i]%50/10;
t4=a[i]%10/5;
t5=a[i]%5/2;
t6=a[i]%5%2;//这里需要先对5取余
s[i]=t1+t2+t3+t4+t5+t6;
sum+=s[i];
}
printf("%d\n",sum);
}
}


3:(二维数组+注意绝对值)

面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。

一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。

分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。

特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。

Input

输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。

Output

对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。

note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。

Sample Input

2 3

1 4 -3

-7 3 0

Sample Output

2 1 -7

#include<stdio.h>
#include<math.h>
int main()
{
int a[100][100];
int i,j,n,k,b,f1,f2;
while(~scanf("%d%d",&k,&b))
{
for(i=1;i<=k;i++)
for(j=1;j<=b;j++)
{
scanf("%d",&a[i][j]);
}
f1=1;f2=1;
for(i=1;i<=k;i++)
for(j=1;j<=b;j++)
{
if(fabs(a[i][j])>fabs(a[f1][f2]))
{
f1=i;
f2=j;
}
}
printf("%d %d %d\n",f1,f2,a[f1][f2]);
}
return 0;
}


4(注意输出格式):

假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。

Input

输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。

Output

对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。

每个测试实例后面跟一个空行。

Sample Input

2 2

5 10

10 20

Sample Output

7.50 15.00

7.50 15.00

1

#include<stdio.h>
int main()
{
int n,m,num,i,j,f;
double a[55][10],S,C,aS[55],aC[10];
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%lf",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
S=0;
for(j=0;j<m;j++)
{
S+=a[i][j];
}
aS[i]=S/m;
}
for(i=0;i<m;i++)
{
S=0;
for(j=0;j<n;j++)
{
S+=a[j][i];
}
aC[i]=S/n;
}
num=0;
for(i=0;i<n;i++)
{
f=0;
for(j=0;j<m;j++)
{
if(a[i][j]>=aC[j])
{
f++;
}
}
if(m==f)
{
num++;
}
}
for(i=0;i<n;i++)
{
if(i==n-1)
printf("%.2lf\n",aS[i]);
else
printf("%.2lf ",aS[i]);
}
for(i=0;i<m;i++)
{
if(i==m-1)
printf("%.2lf\n",aC[i]);
else
printf("%.2lf ",aC[i]);
}
printf("%d\n\n",num);
}
return 0;
}


5:

输入一个字符串,判断其是否是C的合法标识符。

Input

输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output

对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出”yes”,否则,输出“no”。

Sample Input

3

12ajf

fi8x_a

ff ai_2

Sample Output

no

yes

no

#include<stdio.h>
#include<string.h>
int main()
{
int n,t;
char str[55];
while(scanf("%d",&n)!=EOF)
{   getchar();
while(n--)
{
gets(str);
t=0;
for(int i=0;i<strlen(str);i++)
{
if((str[0]>='a'&&str[0]<='z')||(str[0]>='A'&&str[0]<='Z')||(str[0]=='_'))
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')||(str[i]=='_')||(str[i]>='0'&&str[i]<='9'))
t++;
}
}
if(t==strlen(str)) //
printf("yes\n");
else
printf("no\n");
}

}
return 0;
}


6:

对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。

Input

输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

Output

对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入”(max)”。

Sample Input

abcdefgfedcba

xxxxx

Sample Output

abcdefg(max)fedcba

x(max)x(max)x(max)x(max)x(max)

#include <stdio.h>
#include <string.h>
int main()
{
char str[105],m;
while(scanf("%s",str)!=EOF)
{
m=str[0];
for(int i=1;i<strlen(str);i++)
{
if(str[i]>m)
m=str[i];
}
for(int i=0;str[i];i++)
{
printf("%c",str[i]);
if(str[i]==m)
printf("(max)");
}
printf("\n");
}
return 0;
}


7:

输入一个英文句子,将每个单词的第一个字母改成大写字母。

Input

输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行。

Output

请输出按照要求改写后的英文句子。

Sample Input

i like acm

i want to get an accepted

Sample Output

I Like Acm

I Want To Get An Accepted

#include <stdio.h>
#include <string.h>
int main()
{
char s[105];
int flag;
while(gets(s))
{
flag=0;
for(int i=0;i<strlen(s);i++)
{
if(s[0]>='a'&&s[0]<='z')
s[0]=s[0]-32;
if(s[i]==' ')
s[i+1]=s[i+1]-32;
}
for(int i=0;i<strlen(s);i++)
printf("%c",s[i]);
printf("\n");
}
return 0;
}


8:(又是统计啥啥的,水)

9:(n个数最小公倍数)

#include<stdio.h>
long long gcd(long long a,long long b)//相乘用long long,做乘法的时候要考虑爆数据的情况!
{
return b?gcd(b,a%b):a;
}
int main()
{
int n,i;
long long a,b;
while(scanf("%d",&n)!=EOF)
{
a=1;
for(i=0;i<n;i++)
{
scanf("%d",&b);
a=a*b/gcd(b,a);
}
printf("%d\n",a);
}

return 0;
}


10:(判断回文串)

#include<stdio.h>
#include<string.h>
int main()
{
char s[1000];//数组开大一点
int n;
int flag,i,j;
while(scanf("%d",&n)!=EOF)
{
while(n--)
{
flag=0;
scanf("%s",s);
int l=strlen(s);

for(i = 0;i < l; i++)
{
if(s[i]==s[l-i-1])
flag=1;
else
{
flag=0;
break;
}
}
if(flag)
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}


///汉字统计
#include<stdio.h>
#include<string.h>
char s[1005];
int main()
{
int n,l,i,j,count;
while(scanf("%d",&n)!=EOF)
{
getchar();
while(n--)
{
gets(s);
l=strlen(s);
count=0;
for(i=0;i<l;i++)
{
if(s[i]<0)
count++;
}
printf("%d\n",count/2);
}
}
return 0;
}


//进制转换
#include <stdio.h>
int main()
{
int n,r,i,x,flag;
int a[1005];
while (scanf("%d %d",&n,&r)!=EOF)
{
flag=0;
if (n<0)
{
n=-n;
flag=1;
}
x=0;
while (n)
{
a[x]=n%r;
n/=r;
x++;
}
while (x--)
{
if (flag)
{
printf("-");
flag=0;
}
if (a[x]<10)
printf("%d",a[x]);
else
printf("%c",55+a[x]);
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: