这个练习目前来说就比较宽松,打算在寒假(基本也就是这一个月每天刷几道题吧)
题目一:
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 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; } //自己编译一下运行 你会发现输出来的结果并不是正常的加一的结果 //而是一个负数 上面我所定义的和输出的那个负数就是 //这两种变量能够储存的极端值了
标签:储存,题目,int,day01,long,蓝桥,c++,last,ll From: https://www.cnblogs.com/gbrr/p/17028653.html