1.分数
1/1 + 1/2 + 1/4 + 1/8 + 1/16 + …
每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。

#include<bits/stdc++.h>
using namespace std;
//快速幂运算
long pow_2(int a){long res=1;long x=2;while(a>0){if(a&1) res*=x;a>>=1;x=x*x;}return res;
}
//最大公约数
int gcd(long a,long b){return b==0?a:gcd(b,a%b);
}
int main(){cout<<pow_2(20)-1<<"/"<<pow_2(19);
}

num.2

int main(){long a=(1<<19);long b=(a<<1)-1;cout<<b<<"/"<<a<<endl;
}

2.星期一
整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一?

#include<bits/stdc++.h>
using namespace std;
int main(){int y;int days=0;cin>>y;int count=0;for(int i=y;i<2001;i++){if(i%4==0&&i%100!=0||i%400==0){count++; days+=366;}elsedays+=365;}cout<<"1901年1月1日到2000年12月31日有"<<days<<"天"<<endl; cout<<"days/7: "<<days/7<<endl;cout<<"days%7: "<<days%7<<endl;return 0;
}

3.乘积尾零

#include <bits/stdc++.h>
using namespace std;
int main()
{int y5=0,y2=0,d;for(int i=0;i<100;i++){cin>>d;//真正输入数据是不对的while(d%5==0){y5++;d=d/5;}while(d%2==0){y2++;d=d/2;}}//y5 y2不需要重新置为0cout<<min(y5,y2)<<endl;
}
#include <bits/stdc++.h>
using namespace std;
int data[] ={5650,4542,3554,473,946,4114,3871,9073,90,4329,
2758,7949,6113,5659,5245,7432,3051,4434,6704,3594,
9937,1173,6866,3397,4759,7557,3070,2287,1453,9899,
1486,5722,3135,1170,4014,5510,5120,729,2880,9019,
2049,698,4582,4346,4427,646,9742,7340,1230,7683,
5693,7015,6887,7381,4172,4341,2909,2027,7355,5649,
6701,6645,1671,5978,2704,9926,295,3125,3878,6785,
2066,4247,4800,1578,6652,4616,1113,6205,3264,2915,
3966,5291,2904,1285,2193,1428,2265,8730,9436,7074,
689,5510,8243,6114,337,4096,8199,7313,3685,211};
int main()
{int y5=0,y2=0,d;for(int i=0;i<100;i++){d=data[i];while(d%5==0){y5++;d=d/5;}while(d%2==0){y2++;d=d/2;}}//y5 y2不需要重新置为0cout<<min(y5,y2)<<endl;
}

4.第几个幸运数
到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
我们来看前10个幸运数字是:
3 5 7 9 15 21 25 27 35 45
因而第11个幸运数字是:49
小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。

解法:排序 加 去重 生成法 SET

#include<bits/stdc++.h>
#define MAXN 59084709587505
using namespace std;
set<long long>s;
int a[3]={3,5,7};
int main()
{long long tou=1;//头部为 1long long tt; while(1){int i=0;for(;i<3;++i){tt=tou*a[i];if(tt<=MAXN) s.insert(tt);else break;}tou=*s.upper_bound(tou);if(i<3) break;}cout<<s.size()<<endl;return 0;
}//这种方法不对,不是到了那里就截止了,兴许后边还有#include<bits/stdc++.h>
#define MAXN 59084709587505
using namespace std;
set<long long>s;
int a[3]={3,5,7};
int main()
{long long tou=1;//头部为 1long long tt; while(1){for(int i=0;i<3;++i){tt=tou*a[i];if(tt<=MAXN) s.insert(tt);//限制}tou=*s.upper_bound(tou);if(tou==MAXN) break;}cout<<s.size()<<endl;return 0;
}

5.打印图形
如下的程序会在控制台绘制分形图(就是整体与局部自相似的图形)。

当n=1,2,3的时候,输出如下:
请仔细分析程序,并填写划线部分缺少的代码。
n=1时:

n=2时:

n=3时:

#include <stdio.h>
#include <stdlib.h>void show(char* buf, int w){int i,j;for(i=0; i<w; i++){for(j=0; j<w; j++){printf("%c", buf[i*w+j]==0? ' ' : 'o');}printf("\n");}
}void draw(char* buf, int w, int x, int y, int size){if(size==1){buf[y*w+x] = 1;return;}int n = size/3 ; //填空draw(buf, w, x, y, n);draw(buf, w, x-n, y ,n);draw(buf, w, x+n, y ,n);draw(buf, w, x, y-n ,n);draw(buf, w, x, y+n ,n);
}int main()
{int N = 3;int t = 1;int i;for(i=0; i<N; i++) t *= 3;char* buf = (char*)malloc(t*t);for(i=0; i<t*t; i++) buf[i] = 0;draw(buf, t, t/2, t/2, t);show(buf, t);free(buf);return 0;
}

6.航班时间
【问题背景】
小h前往美国参加了蓝桥杯国际赛。小h的女朋友发现小h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。

小h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有12小时时差,故飞机总共需要14小时的飞行时间。

不久后小h的女朋友去中东交换。小h并不知道中东与北京的时差。但是小h得到了女朋友来回航班的起降时间。小h想知道女朋友的航班飞行时间是多少。

【问题描述】
对于一个可能跨时区的航班,给定来回程的起降时间。假设飞机来回飞行时间相同,求飞机的飞行时间。

【输入格式】
从标准输入读入数据。
一个输入包含多组数据。

输入第一行为一个正整数T,表示输入数据组数。
每组数据包含两行,第一行为去程的 起降 时间,第二行为回程的 起降 时间。
起降时间的格式如下

h1:m1:s1 h2:m2:s2

h1:m1:s1 h3:m3:s3 (+1)

h1:m1:s1 h4:m4:s4 (+2)
表示该航班在当地时间h1时m1分s1秒起飞,

第一种格式表示在当地时间 当日 h2时m2分s2秒降落
第二种格式表示在当地时间 次日 h3时m3分s3秒降落。
第三种格式表示在当地时间 第三天 h4时m4分s4秒降落。

对于此题目中的所有以 hⓂ️s 形式给出的时间, 保证 ( 0<=h<=23, 0<=m,s<=59 ).

【输出格式】
输出到标准输出。

对于每一组数据输出一行一个时间hh:mm:ss,表示飞行时间为hh小时mm分ss秒。
注意,当时间为一位数时,要补齐前导零。如三小时四分五秒应写为03:04:05。

【样例输入】
3
17:48:19 21:57:24
11:05:18 15:14:23
17:21:07 00:31:46 (+1)
23:02:41 16:13:20 (+1)
10:19:19 20:41:24
22:19:04 16:41:09 (+1)

【样例输出】
04:09:05
12:10:39
14:22:05

#include<bits/stdc++.h>
#define ll long long
using namespace  std;
int change()
{int s1,s2,h1,h2,m1,m2;scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);char x;int flag=0;while((x=getchar())!='\n'){if(isdigit(x))flag=x-'0';}int time=0;if(flag==0)time=h2*3600+m2*60+s2-(h1*3600+m1*60+s1);else time=24*3600*flag+h2*3600+m2*60+s2-(h1*3600+m1*60+s1);return time;
}
int main()
{int t;cin>>t;while(t--){int x=change();int y=change();int temp=(x+y)/2;int h=temp/3600;temp=temp%3600;int m=temp/60;temp=temp%60;int sec=temp;printf("%02d:%02d:%02d\n",h%24,m,sec);//飞行时间不超过24小时}return 0;
}

7.三体攻击
三体人将对地球发起攻击。为了抵御攻击,地球人派出了 A × B × C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体。其中,第 i 层第 j 行第 k 列的战舰(记为战舰 (i, j, k))的生命值为 d(i, j, k)。
三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第 t 轮攻击用 7 个参数 lat, rat, lbt, rbt, lct, rct, ht 描述;
所有满足 i ∈ [lat, rat],j ∈ [lbt, rbt],k ∈ [lct, rct] 的战舰 (i, j, k) 会受到 ht 的伤害。如果一个战舰累计受到的总伤害超过其防御力,那么这个战舰会爆炸。
地球指挥官希望你能告诉他,第一艘爆炸的战舰是在哪一轮攻击后爆炸的。
【输入格式】
从标准输入读入数据。
第一行包括 4 个正整数 A, B, C, m;
第二行包含 A × B × C 个整数,其中第 ((i − 1)×B + (j − 1)) × C + (k − 1)+1 个数为 d(i, j, k);
第 3 到第 m + 2 行中,第 (t − 2) 行包含 7 个正整数 lat, rat, lbt, rbt, lct, rct, ht。
【输出格式】
输出到标准输出。
输出第一个爆炸的战舰是在哪一轮攻击后爆炸的。保证一定存在这样的战舰。
【样例输入】
2 2 2 3
1 1 1 1 1 1 1 1
1 2 1 2 1 1 1
1 1 1 2 1 2 1
1 1 1 1 1 1 2
【样例输出】
2
【样例解释】
在第 2 轮攻击后,战舰 (1,1,1) 总共受到了 2 点伤害,超出其防御力导致爆炸。

【数据约定】
对于 10% 的数据,B = C = 1;
对于 20% 的数据,C = 1;
对于 40% 的数据,A × B × C, m ≤ 10, 000;
对于 70% 的数据,A, B, C ≤ 200;
对于所有数据,A × B × C ≤ 10^6, m ≤ 10^6, 0 ≤ d(i, j, k), ht ≤ 10^9。
num.1

#include<bits/stdc++.h>
using namespace std;
int a[200][200][200];
int main()
{int A, B, C, m;scanf("%d%d%d%d", &A, &B, &C, &m);for(int i=0;i<A;i++){for (int j=0;j<B;j++){for (int k=0;k<C;k++){scanf("%d",&a[i][j][k]);}}}int lat, rat, lbt, rbt, lct, rct, ht;for (int i=1;i<=m;i++){scanf("%d%d%d%d%d%d%d", &lat, &rat, &lbt, &rbt, &lct, &rct, &ht);for (int j=lat-1;j<=rat-1;j++){for (int k=lbt-1;k<=rbt-1;k++){for (int p=lct-1;p<=rct-1; p++){a[j][k][p] -= ht;if (a[j][k][p] < 0){printf("%d\n", i);return 0;}}}}}return 0;
}

num.2
静态-------->>>>前缀和 o(1)查询
差分 o(1)改变

c—>差分数组
s---->前缀和
d---->原始数组
前缀和 与 原始数据比对即可
攻击 撒币 种花种草 --》都是改变数字

三位差分

#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=(x);i<=(y);i++)
#define dwn(i,x,y) for(register int i=(x);i>=(y);i--)
#define maxn 1000010
#define LL long long
using namespace std;
int read()
{int x=0,f=1;char ch=getchar();while(!isdigit(ch)&&ch!='-')ch=getchar();if(ch=='-')f=-1,ch=getchar();while(isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar();return x*f;
}
void write(int x)
{int f=0;char ch[20];if(!x){putchar('0'),putchar('\n');return;}if(x<0)x=-x,putchar('-');while(x)ch[++f]=x%10+'0',x/=10;while(f)putchar(ch[f--]);putchar('\n');
}
LL qh[maxn],a[maxn],s[maxn],d[maxn];
int qxa[maxn],qya[maxn],qza[maxn],qxb[maxn],qyb[maxn],qzb[maxn],A,B,C,m,ans;
int getx(int x,int y,int z){return (x*B+y)*C+z+1;}
void getp(int x,int px,int py,int pz){x--;pz=x%C,x/=C,py=x%B,pz=x/B;return;}
void add(int x,int y,int z,LL h){if(x<=(A-1)&&y<=(B-1)&&z<=(C-1))a[getx(x,y,z)]+=h;}
void atk(int xa,int ya,int za,int xb,int yb,int zb,LL h)
{add(xa,ya,za,h),add(xa,ya,zb+1,-h),add(xa,yb+1,za,-h),add(xa,yb+1,zb+1,h);add(xb+1,ya,za,-h),add(xb+1,ya,zb+1,h),add(xb+1,yb+1,za,h),add(xb+1,yb+1,zb+1,-h);
}
int check()
{rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)s[getx(i,j,k)]=a[getx(i,j,k)];if(C!=1)rep(i,0,A-1)rep(j,0,B-1)rep(k,1,C-1)s[getx(i,j,k)]+=s[getx(i,j,k-1)];//,cout<<i<<" "<<j<<" "<<k<<"+1 "<<s[getx(i,j,k-1)]<<endl;if(B!=1)rep(i,0,A-1)rep(j,1,B-1)rep(k,0,C-1)s[getx(i,j,k)]+=s[getx(i,j-1,k)];//,cout<<i<<" "<<j<<" "<<k<<"+2 "<<s[getx(i,j-1,k)]<<endl;if(A!=1)rep(i,1,A-1)rep(j,0,B-1)rep(k,0,C-1)s[getx(i,j,k)]+=s[getx(i-1,j,k)];//,cout<<<<"+3 "<<s[getx(i-1,j,k)]<<endl;rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)if(s[getx(i,j,k)]>d[getx(i,j,k)])return 1;return 0;
}
void getans(int L,int R,int lastmid)
{if(L>R)return;int mid=(L+R)>>1;if(mid>lastmid)rep(i,lastmid+1,mid)/*cout<<"mid:"<<mid<<" add:"<<i<<endl,*/atk(qxa[i],qya[i],qza[i],qxb[i],qyb[i],qzb[i],qh[i]);if(mid<lastmid)rep(i,mid+1,lastmid)/*cout<<"mid:"<<mid<<" del:"<<i<<endl,*/atk(qxa[i],qya[i],qza[i],qxb[i],qyb[i],qzb[i],-qh[i]);int f=check();//cout<<"mid:"<<mid;//cout<<"now:";//rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)cout<<s[getx(i,j,k)]<<" ";cout<<endl;if(f){ans=min(ans,mid);getans(L,mid-1,mid);}else getans(mid+1,R,mid);
}
int main()
{//freopen("attack.in","r",stdin);//freopen("attack.out","w",stdout);A=read(),B=read(),C=read(),ans=m=read();rep(i,0,A-1)rep(j,0,B-1)rep(k,0,C-1)d[getx(i,j,k)]=read();rep(i,1,m)qxa[i]=read()-1,qxb[i]=read()-1,qya[i]=read()-1,qyb[i]=read()-1,qza[i]=read()-1,qzb[i]=read()-1,qh[i]=read();getans(1,m,0);write(ans);return 0;
}

2018 蓝桥杯 C++ A组 1-7相关推荐

  1. 2018蓝桥杯C++A组:三角形面积(海伦公式;向量的叉积)

    一.题目:三角形面积 已知三角形三个顶点在直角坐标系下的坐标分别为: (2.3,2.5) (6.4,3.1) (5.1,7.2) 求该三角形的面积. 提交小数形式表示浮点数,精确到小数点后三位. 分析 ...

  2. 2018蓝桥杯C++A组——星期一

    目录 问题描述 题目解析 C++代码 正确答案 问题描述 整个20世纪(1901年1月1日至2000年12月31日之间),一共有多少个星期一? 注意:需要提交的只是一个整数,不要填写任何多余的内容或说 ...

  3. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  4. 2018年 第9届 蓝桥杯 Java B组 省赛真题详解及总结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

  5. 2018 蓝桥杯省赛 B 组模拟赛(一)--封印之门

    题目链接:https://nanti.jisuanke.com/t/A1594 蒜头君被暗黑军团包围在一座岛上,所有通往近卫军团的路都有暗黑军团把手.幸运的是,小岛上有一扇上古之神打造的封印之门,可以 ...

  6. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  8. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  9. 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  10. 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

最新文章

  1. 深入java_深入Java Final
  2. AI一分钟 | 华米发布全球首款可穿戴AI芯片;亚马逊年底上线至少8款Alexa设备
  3. 英特尔专家告诉你 信息时代如何掌控数据安全(附视频PPT)
  4. java 网线串口开发_C++标准语言不断被开发,C++却走向了下坡路!
  5. 基于注解的SpringMVC整合JPA
  6. Clojure 学习
  7. 【转】通过Graph 浏览器体验Microsoft Graph
  8. 基于 OpenCv 和 Python 的手指识别及追踪
  9. POST提交JSON字符串实战项目(JAVA网络网络爬虫)
  10. OpenSceneGraph FAQ
  11. go代码--数据结构
  12. combox简单用法
  13. JS库之Highlight.js高亮代码
  14. 曲线运动与万有引力公式_专题三曲线运动与万有引力定律
  15. 长期在计算机房工作辐射大吗,在机房里工作辐射大吗
  16. MD5校验判断文件是否一样
  17. phabricator代码提交自动触发Jenkins token发版(一)
  18. 《结对-爬取大麦网演唱会信息-设计文档》
  19. itol绘制高颜值的进化树
  20. 医院WLAN无线认证解决方案

热门文章

  1. android 系统闹钟 问题,android 闹钟设置问题(示例代码)
  2. 算法的时间复杂度和空间复杂度详解
  3. 【lol版】2022年最新Java学习路线图(来自动力节点)
  4. linux mint 下如何制作win7启动盘
  5. Invalid interval string, expecting a number followed by one of Mwdhmsy
  6. steam换头像出现服务器错误_推特热搜第二!史上bug最多的游戏终于出现…
  7. 速卖通关键词挖掘工具_SEMer如何利用工具挖掘更多的关键词?拓词技巧
  8. uml活动图 各个功能的操作流程和分支_uml活动图
  9. Python链家租房信息爬虫和高德地图展示
  10. 容易的计算机科技核心期刊,计算机类容易中的期刊