关于蓝桥杯竞赛的一些小技巧

1.cin,cout的输入输出耗时会大于scanf,printf,如果你想使用cin,cout也可以提高效率的话,就在主函数里加上两行代码

ios::sync_with_stdio(false);
cin.tie(0);

2.定义无穷大无穷小:

#include<limits.h>
...
//输入这个头文件后在代码中可以直接使用INT_MAX和INT_MIN,前者为整形里的最大整数,后者为最小整数



#include<float.h>
...
//输入这个头文件后在代码中可以直接使用DBL_MAX和DBL_MIN,前者为double类型所能代表的最大值,后者为double类型所能代表的最小值

3.解决sqrt函数返回值是double类型,但是你想要存下long long类型的问题:

typedef long long ll;
ll sqrt(ll x)
{
    ll s=0,l=1,r=10000000000;
    while(l<=r)
    {
        ll mid=l+r>>1;
        if(mid*mid<=x)
            {
                s=mid;
                l=mid+1;
            }
        else
            r=mid-1;
    }
    return s;
}

4.文件重定向技术(部分竞赛题可能需要读取文件,这时候需要用到这个技巧):

freopen("input.txt","r",stdin);
int a,b;
cin>>a>>b;//从文件中读取a,b
cout<<a+b;
fclose(stdin);//可不写

5.a&1:是一个判断条件,当a为奇数时返回true,反之返回false。其实质是判断a的二进制数最后一位是否为1,如果为1(说明a为奇数),那么a&1==1,反之如果最后一位为0(说明a为偶数),a&1==0

6.n>>1:二进制右移,用于去掉最后一位

        比如n=3,3的二进制表示为11,那么n>>1就是把最后一位去掉,所以n>>1=1

       再比如n=5,5的二进制表示为101,那么n>>1=10,注意这是二进制的,它对应的十进制数  是  2,所以n>>1=2

7.c++中如何计算log以2为底的数(c++中没有log2函数,但是有log10函数),所以我们可以把

        log2(x)=log10(x)/log10(2)

8.生成随机数和刷新随机数:

#include<ctime>
srand((unsigned)time(NULL));//用于刷新随机数
#include<cstdlib>
rand()%n+1//用于生成[1,n]之间的随机数

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周周写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值