c++算法练习day01【2022年蓝桥杯省赛B组题目】每天做一点、、、
这个练习目前来说就比较宽松,打算在寒假(基本也就是这一个月每天刷几道题吧)
题目一:
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?
答案:
#include <iostream>
using namespace std;
typedef long long ll;
ll a,b,n,add,day;
int main()
{
cin>>a>>b>>n;
int tem=5*a+2*b;//计算一周要刷多少道题
ll week=n/tem;//计算要刷多少周
ll last=n%tem;//还剩多少道题
day+=week*7;//表示整周的天数
int x=1;
while(last>0)//剩下的题目为零停止(为了解决剩下的题目的问题)
{
if(x%7==6||x%7==0) last-=b;
else last-=a;
day++;
x++;
}
cout<<day<<endl;
return 0;
}
题解:
由上图可知,数据类型应为long long型
其次由于本题n的数据范围很大,直接写while循环会超时,所以得先计算一下需要几周,再计算还需要几天。
作者有话说:
long long只能用于储存整数 but long long 的储存范围要比int 大
众所周知 int 整形类型的变量可以储存的范围是 -2³²+1 ~ 2³²-1 (-2^32+1~2^32-1)
但是 long long 类型可以储存的就比int 类型可以储存的大得多。long long类型的变量可以储存的范围是-2⁶⁴+1~2⁶⁴-1(-2^64+1~2^64-1)
为了验证大家可以试试运行下面这个代码
#include<bits/stdc++.h>//老生常谈的“万能”工具箱 using namespace std; typedef long long ll;//可以在代码中用ll来代替繁琐的long long int main(){ int i=4294967295; ll a=18446744073709551615; cout<<i<<" "<<a; i++; a++; cout<<i<<" "<<a; return 0; } //自己编译一下运行 你会发现输出来的结果并不是正常的加一的结果 //而是一个负数 上面我所定义的和输出的那个负数就是 //这两种变量能够储存的极端值了
本文作者:喝着农药吐泡泡o
本文链接:https://www.cnblogs.com/gbrr/p/17028653.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步