正式开始练题的第一天
在计蒜客练题;
第一题 “T1079 开关灯”居然就让卡住了;
ceil()函数向上取整居然从来没用过,【math.h】 double ceil( double num );
结果把abs当成向下会取整,好尴尬;
floor()才是向下取整,【math.h】 double floor( double arg );
这要是蓝桥杯的题,恐怕我会在5分的题直接挂掉。
#include <iostream>
#include<math.h>
using namespace std;
int main(int argc, char** argv) {
double roof,x,y,people,time=0;
cin>>roof;
for(int i=0;i<roof;i++)
{
cin>>x>>y>>people;
time+=(sqrt(x*x+y*y)/50*2+people*1.5);
}
cout<<floor(time);
return 0;
}
第二题“T1079 开关灯”
没什么难度,但由于思维不够严谨,不该用else时却使用了else,导致关键语句被跳过了,大大的浪费时间;还有就是习惯了复制粘贴,每回都是复制过来就完事,完全不管复制以后还是不是适用。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(int argc, char** argv) {
int n,m,p=0,flag[5000]={1},flag2[5000]={0};
cin>>n>>m;
if(m>=1)
{
memset(flag,0,sizeof(flag));
}
if(m>=2)
{
for(int i=1;i<n;i+=2)
{
flag[i]=1;
}
}
if(m>2)
{
for(int i=3;i<=m;i++)
{
for(int j=i-1;j<n;j+=i)
{
if(flag[j]==1)
flag[j]=0;
else flag[j]=1;
}
}
}
for(int i=0;i<n;i++)
{
if(flag[i]==0)
{
flag2[p]=i+1;
p++;
}
}
for(int i=0;i<p-1;i++)
{
cout<<flag2[i]<<',';
}
cout<<flag2[p-1];
return 0;
}
第三题“T1084 雇佣兵”
居然看不懂题意,看了好几次,每一次都是根据输入输出推理题意,才搞懂题目意思;
开始一直以为是战斗力为2,那么第二天以后,每连续战斗一天,都会让战斗力加1,但发现和测试貌似对不上;题意直接扑街。。。。。
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(int argc, char** argv) {
double m,n,x;
cin>>m>>n>>x;
while(1)
{
x-=ceil(m/n);//恢复体力
if(x<0)
break;
n+=floor(m/n); //消耗体力提升战力
}
cout<<n;
return 0;
}
第四题“T1096 石头剪刀布”
完美一次通过
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n,na,nb,p=0,q=0,sum=0,nas[100],nbs[100],num[100],nas2[100],nbs2[100];
/*n,na,nb,nas[100],nbs[100]为输入,p=0,q=0相当于是临时变量,用sum的正负判断A赢还是B赢,nas2[100],nbs2[100]用来保存A、B在n轮内所出的手势*/
cin>>n>>na>>nb;
for(int i=0;i<na;i++)
cin>>nas[i];
for(int i=0;i<nb;i++)
cin>>nbs[i];
for(int i=0;i<n;i++)//保存A、B在n轮内所出的手势
{
nas2[i]=nas[p];
p++;
if(p==na)
p=0;
nbs2[i]=nbs[q];
q++;
if(q==nb)
q=0;
}
for(int i=0;i<n;i++)//判断A、B谁赢
{
if(nas2[i]==nbs2[i])//手势相同
continue;
if(nas2[i]+nbs2[i]==2)//一个石头,一个剪刀
{
if(nas2[i]==0)
sum++;
else sum--;
}
if(nas2[i]+nbs2[i]==5)
{
if(nas2[i]==0)
sum--;
else sum++;
}
if(nas2[i]+nbs2[i]==7)
{
if(nas2[i]==2)
sum++;
else sum--;
}
}
if(sum>0)
cout<<"A";
if(sum<0)
cout<<"B";
if(sum==0)
cout<<"draw";
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)