2019年ACM10月末总结第1/4段
突然看了一下,这本书竟然有了6个收藏。。
嗯?我都写这样了,竟然还有收藏?
感谢各位大大们对我的支持吧。
以后有了固定的空余时间,我一定完完整整写一本属于自己的小说。。。
下面是我进大学以后第一次进队(ACM:一种全国性的计算机比赛)后,进行了第一次模拟比赛,一开始大一进队一共有50个人,到了现在(不到一年),仅剩23个人了(现在的大二还剩7个人)。
当时的我是真正意义上的小萌新,看看当时写的总结,还是挺有感慨的。。。
......
2019年ACM10月末总结
从开学到现在,来到队里也有蛮长时间的了,也迎来了队内的第一次正规的模拟比赛,心情说不紧张肯定是假的,但在真正开始比赛的期间,紧张感,压迫感,是加大还是减少,谁又能说的清楚,反正赛已经比完了,结局已定,往事不堪回首……
但回顾这些日子以来,自己从编程零基础到现在C语言的知识已经基本掌握(C++的知识点大部分也都会),看着一行一行代码从自己手中产生,再一个删除键从眼前消失,细细回想好像真的码下了不少代码。
废话不多说,这个比赛的主旨还是巩固自己不会的知识点,还是让代码来说话更能体现这篇总结最根本的价值吧。
下面是对这次比赛的一些解析,如果对这方面不敢兴趣的人,可以直接跳过这部分,看最后的总结。。。(如果不感兴趣:题目1001-1006,直接跳到1006解析那里就可以了)
头文件我就省了,不然占了不少行。。。
1001.qp师哥的亲切关怀,最水的题
这道题一开始就错了,而且错了两次(自己表示心态受到了影响),看到是最水的题自己都做不出来,还是蛮难过的(不过到了最后还好,别人也做不出来)。
代码
int main()
{
doublea, b;
cin>> a >> b;
(1) cout << int(a * b +1e-8)<< endl;
(2) intm=a*b;
cout<< m << endl;
return0;
}
0.58 100
57(如果不加1e-8的话,就会出现精度损失)
Program ended with exit code: 0
知识点
(1)最重要的:精度问题
(2)以前也有专门研究过,就是关于四舍五入到百分位或是十分位,跟直接取整数部分的一些区别,我觉得还是比较有用的。
先说这道题的直接取整数吧,答案直接用int直接转换,没什么可以说的。
再说关于四舍五入的问题(以四舍五入到百分位为例):
1.在输出时直接控制就行(例printf(“%6.2d”,a),或者直接把那个6去掉printf(“%.2d”,a),这两种都是可行的,是四舍五入,而不是直接舍去百分号之后的部分。
2.在大量数据都需要控制的时候用到下图的绿色字体
int main()
{
doublea=1.666;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout<< a << endl;
return0;
}
1.67
Program ended with exit code: 0
3.当然还有更正宗的解法(以money为例)
money=money*100+0.5;
money=(int)(money);//将money乘100加上0.5后的值取整
money/=100;
第一种方法在需要大量小数运算的情况下容易损失精度,这三种方法应当灵活运用。
1002.第几天
这道题在超时一次后就过了(在刚W掉1001两次之后,又超时了简直心态爆炸),不过还好bug让我在最短时间内找出来了。
下面直接附上自己的代码(如果大佬们有其他的,更好的,更简单的可无视我的)
代码
int a[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
void judge(int x)
{
if(x%400==0 ||(x%4==0&&x%100!=0))
{
a[2]=29;
}
else a[2]=28;
}
int main ()
{
std::ios::sync_with_stdio();
int x,y,z,sum;
while (scanf(“%d/%d/%d“,&x,&y,&z)!=EOF)//因为一开始用的都是cin,这次有/,换用scanf输入,却没有加!=EOF,让它坑了自己一把,因为超时,我还加了一行std::ios::sync_with_stdio(),当然如果我不加!=EOF的话没什么卵用
{
本章未完,请点击下一段进行阅读!