第一次的比赛,实在是有点水 只出了1道题
先看看排名 第6....
先开始做1001 ~
1215 七夕节
七夕节
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34839 Accepted Submission(s): 10919
人们纷纷来到告示前,都想知道谁才是自己的另一半.告示如下:
数字N的因子就是所有比N小又能被N整除的所有正整数,如12的因子有1,2,3,4,6.
你想知道你的另一半吗?
3 2 10 20
1 822
这道题有坑点,做的时候各种超时,之前没接触这种超时的题,也不知道怎么解决,连错11回合,这个时候大家基本上都在做这道题,1个小时还没人A出一道题,顿时倍受打击,于是去找后面的简单题,老廖竟然悠哉悠哉地说,这是给我们下马威,我们无力吐槽........
附上代码
/*#include<stdio.h>//涛哥代码
int main (void)
{
int n,sum,i,a,k;
scanf("%d",&n);
while(n--&&scanf("%d",&a))
{
sum=0;
for(i=1; i*i<=a; i++)
{
if(a%i==0)
{
sum+=i+a/i;
}
if(i*i==a)
{
sum-=i;
}
}
printf("%d\n",sum-a);
}
return 0;
}
*/
//自己的代码
/*
#include<stdio.h>
int main (void)
{
int n,sum,i,a,k;
scanf("%d",&n);
while(n--&&scanf("%d",&a))
{
sum=0;
for(i=1; i*i<=a; i++)
{
if(a%i==0)
{
sum+=i;
k=a/i;
if(k==1||k==a)
{
;
}
else
{
sum+=k;
}
if(k==i)
{
sum-=k;
}
}
}
printf("%d\n",sum);
}
return 0;
}
*/
//打表
#include<stdio.h>
#include<string.h>
int hash[500010];
int biao (void)
{
int i,j;
memset(hash,0,sizeof(hash));
for(i=1; i<=500000/2; i++)
{
for(j=2; j*i<=500000; j++)
{
hash[j*i]+=i;
}
}
}
int main(void)
{
biao();
int n,a;
scanf("%d",&n);
while(n--)
{
scanf("%d",&a);
printf("%d\n",hash[a]);
}
return 0;
}
接着把后面几道题扫了一遍以后去做1004
1202 GPA
The calculation of GPA
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22866 Accepted Submission(s): 5306
一般大学采用之计分法
A90 - 100 4 点
B80 - 89 3 点
C70 - 79 2 点
D60 - 69 1 点
E0 - 59 0 点
例如:某位学生修习三门课,其课目、学分及成绩分别为:
英文:三学分、92 分;化学:五学分、80 分;数学:二学分、60分,则GPA的算法如下:
科目 学分 分数 点数 分数×点数
英文 3 92 4 12
化学 5 80 3 15
数学 2 60 1 2
合计 10 29
29/10=2.9
2.9即为某生的GPA
下面有请你写一个用于计算GPA的程序。
3 3 92 5 80 2 60
2.90
那个鬼 ,很简单的题,但是想得太简单了,连态度没看清楚,输入的时候要用实型 double 大家基本上都在用int ,球哥尤为突出,大战37回合,还是没A出来 ,哈哈哈,我做了几遍之后,发现这道题一定有坑点,果断放弃,扫其他各种题目,其实事后发现自己对题目的理解有问题,思路都是错的。
过一会学姐提醒有人A出了1008 ,挺简单的
分数矩阵
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5312 Accepted Submission(s): 3146
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。
请求出这个矩阵的总和。
1 2 3 4 0
1.00 3.00 5.67 8.83
就在我A矩阵的时候 有个大神A出了1000 ,我了个去 ,全场各种膜拜。我果断抛弃....心烦....继续做我的矩阵过了一会 我也A出了我的1008 好开心,应该是全场第三个A出题目的人 哈哈
又看看1009 被长长的文字阵仗吓懵了 果断抛弃 其实 是最简单的题目 555555555555
然后 我又辗转 1002 1003 等等 发现各种当时觉得是大坑的题 完全没有头绪 ,1003我还思考了2个小时 ,感觉各种坑 ,做不出来 ,后来发现也是一道水而已 ,直到比赛结束前半个小时,发现很多人都A出了我做的那道1008
1001 也有几个人做出来了,三个我们班的。郁闷 ,继续思考1001 找因子,循环超时 ,要用算法了 。可是一点都不会.. 技巧也不会 廖老师提醒的也不知道怎么解决 ,心烦意乱 比赛还有10分钟 ,第一名A出1007 八球 我擦 之前被题目吓到了 哎 就这样惊悚到终点结束 只做出了一道题 区区第6名 哎~
贴题!!
排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41139 Accepted Submission(s): 11804
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
0051231232050775
0 77 12312320
#include<stdio.h>
#include<string.h>
#include<math.h>
//000555544445554455123
int main (void)
{
int i,j,m,temp;
char a[1030],b[1030];
int c[1000];
while(gets(b))
{
memset(c,0,sizeof(c));//注意第一次初始化为0
for(i=0;;i++)
{
a[i]=b[i];
if(a[i]=='\0')//如果末尾没有5 在字符串最后加上5
{
// printf("~~~");
a[i]='5';
a[i+1]='\0';
break;
}
}
//printf("strlen(a)=%d\n",strlen(a));
// puts(a);
for(m=i=0; i<strlen(a); i++)
{
if(a[i]=='5')//排除连续5的情况
{
continue;
}
else
{
for(;a[i]!='5';i++)//遇到a[i]=5之后,跳出循环
{
c[m]=c[m]*10+a[i]-'0';//变成整数储存在数组c[m]中
}
m++;
i--;
}
}
for(i=0; i<m-1; i++)//排序
{
for(j=i+1; j<m; j++)
{
if(c[i]>c[j])
{
temp=c[i];
c[i]=c[j];
c[j]=temp;
}
}
}
for(i=0; i<m; i++)//输出
{
if(i==0)
{
printf("%d",c[i]);
}
else
printf(" %d",c[i]);
}
//memset(c,0,sizeof(c));
printf("\n");
}
return 0;
}
吃糖果
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 27979 Accepted Submission(s): 7919
2 3 4 1 1 5 5 4 3 2 1
No Yes
饭卡
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15511 Accepted Submission(s): 5361
某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。
第一行为正整数n,表示菜的数量。n<=1000。
第二行包括n个正整数,表示每种菜的价格。价格不超过50。
第三行包括一个正整数m,表示卡上的余额。m<=1000。
n=0表示数据结束。
1 50 5 10 1 2 3 2 1 1 2 3 2 1 50 0
I NEED A OFFER!
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19164 Accepted Submission(s): 7674
后面的m行,每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。
输入的最后有两个0。
10 3 4 0.1 4 0.2 5 0.3 0 0
44.0%HintYou should use printf("%%") to print a '%'.
Total Submission(s): 4080 Accepted Submission(s): 2351
现在给出打进的球(白球除外)的顺序,以及黑球由哪方打进,你的任务是判定哪方是胜者。
假设不会有一杆同时打进一颗黑球和其他彩球。
所有输入都满足如下条件:最后一颗球打进时这局比赛正好结束,而且打进的红球和黑球都不超过7个。
5 RYRRB 9 RRRRYRRRB 0
Yellow Red
#include<stdio.h>
#include<string.h>
int main (void)
{
char a[20];
int i,k,b[20],pr,py;
while(~scanf("%d",&i)&&i)
{
getchar();
gets(a);
pr=py=7;
for(i=0; i<strlen(a); i++)
{
switch(a[i])
{
case 'Y':
{
py--;
break;
}
case 'R':
{
pr--;
break;
}
case 'L':
{
if(py!=0) printf("Red\n");
else printf("Yellow\n");
break;
}
case 'B':
{
if(pr!=0)
{
printf("Yellow\n");
}
else
{
printf("Red\n");
}
break;
}
}
}
}
return 0;
}
最简单的计算机
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5581 Accepted Submission(s): 3095
命令A:将内存M1的数据装到寄存器R1中;
命令B:将内存M2的数据装到寄存器R2中;
命令C:将寄存器R3的数据装到内存M1中;
命令D:将寄存器R3的数据装到内存M2中;
命令E:将寄存器R1中的数据和寄存器R2中的数据相加,结果放到寄存器R3中;
命令F:将寄存器R1中的数据和寄存器R2中的数据相减,结果放到寄存器R3中。
你的任务是:设计一个程序模拟PpMm的运行。
其他说明:R1,R2,R3的初始值为0,所有中间结果都在-2^31和2^31之间。
100 288 ABECED 876356 321456 ABECAEDBECAF
388,388 2717080,1519268
#include<stdio.h>
#include<string.h>
int main (void)
{
char a[210];
int i;
__int64 m1,m2,r1,r2,r3;
while(~scanf("%I64d%I64d",&m1,&m2))
{
getchar();
r1=r2=r3=0;
gets(a);
for(i=0;i<strlen(a);i++)
{
switch(a[i])
{
case 'A': r1=m1;break;
case 'B': r2=m2;break;
case 'C': m1=r3;break;
case 'D': m2=r3;break;
case 'E': r3=r1+r2;break;
case 'F': r3=r1-r2;break;
}
}
printf("%I64d,%I64d\n",m1,m2);
}
return 0;
}
遗憾收场 ~~~明天第二场开始了 fighting!!!
我要AK!!!!
最后总结一下本次的比赛:
1:看到长的题目不能心慌 ,就是吓唬人的
2:理清思路
3:仔细阅读题目,一定有各种坑点 比如 让你输入浮点型 实型 等等double 或者int
4:HDU上面DIY的题提交代码竟然不能有//这种隐藏汉字的规定