第八届蓝桥杯大赛c/c++ b组
来源:互联网 发布:usb端口检测工具 编辑:程序博客网 时间:2024/05/16 00:46
5200
上面是我的答案
可以直接手算,但容易出错。
或者复制题目给的数据,稍微修改并格式化,放到文本文档中,不管是运行后复制数据,还是用io重定向,都要比手算方便。
比赛的时候freopen的前两个参数写反了,一直读不进去210
比赛的时候没想清楚怎么搜
#include<cstdio>#include<cstring>#define LL long long#define MAX 10000bool isprime[MAX];int prime[MAX],cnt;void doprime(){ cnt=0; memset(isprime,true,sizeof(isprime)); isprime[0]=isprime[1]=false; for(LL i=2;i<=MAX;++i){ if(isprime[i]){ prime[cnt++]=i; for(LL j=i*i;j<=MAX;j+=i)//i是int可能溢出 isprime[j]=false; } }}int main(){ doprime(); for(int i=1;;++i){ int j; for(j=0;j<cnt;++j){ int k; int tmp=prime[j]; for(k=0;k<10;++k){ if(!isprime[tmp]) break; tmp+=i; } if(k>=10) break; } if(j<cnt){ printf("%d\n",i); break; } } return 0;}
- 好像是7开头的一个挺大的数
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;double a[40][40];int data; //电子秤的最小示数int main(){ for(int i=1;i<=29;++i){ for(int j=1;j<=29;++j){ scanf("%lf",&a[i][j]); if(j>1) a[i][j]+=a[i-1][j-1]/2; if(j<i) a[i][j]+=a[i-1][j-1]/2; } } printf("%f\n",data/(a[29][29]/2)*max((a[29][14]+a[29][15])/2,(a[29][16]+a[29][17])/2)); return 0;}
比赛时的代码没最后的比较,不知道能不蒙对
- 216
要想满足分成两部分并且两部分相同,对应的条件是分割线没有经过同一个点和分割线关于(3,3)点中心对称,所以从(3,3)点出发遍历所有路径,路径数再除以2 就是答案
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dir[4][2]={-1,0,0,1,1,0,0,-1};bool vis[10][10];int ans;bool check(int x,int y){ return x>=1&&x<=6&&y>=1&&y<=6;}void dfs(int x,int y){ if(x==1||x==6||y==1||y==6){ ++ans; return; } for(int i=0;i<4;++i){ int xx=x+dir[i][0]; int yy=y+dir[i][1]; if(check(xx,yy)&&!vis[xx][yy]&&!vis[6-xx][6-yy]){ vis[xx][yy]=true; dfs(xx,yy); vis[xx][yy]=false; } }}int main(){ vis[3][3]=true; dfs(3,3); printf("%d %d\n",ans,ans/2); return 0;}
- f(x/10,k)
- a[i-1][j-1]+1
- 模拟一下就好,最后排一下序。
- dp或者母函数暴一下,应该能过一部分数据
- 没看懂
- 数据范围记不太清了,这样应该可以,至少比枚举复杂度低
#include<cstdio>#include<cstring>#include<algorithm>#define MAX 100000using namespace std;int dp[MAX+10][100];int main(){ int n,k; int tmp; int ans=0; memset(dp,0,sizeof dp); scanf("%d%d",&n,&k); for(int i=1;i<=n;++i){ scanf("%d",&tmp); ++dp[i][tmp%k]; for(int j=0;j<k;++j){ dp[i][(j+tmp)%k]+=dp[i-1][j]; } } for(int i=1;i<=n;++i) ans+=dp[i][0]; printf("%d\n",ans); return 0;}
以上答案仅供参考
0 0
- 第八届蓝桥杯大赛c/c++ b组
- 第八届蓝桥杯B组 c++/c
- 第八届蓝桥杯C语言B组,小结
- 第八届蓝桥杯B组C/C++
- 第六届蓝桥杯C/C++B组第八题 移动距离
- 第八届蓝桥杯C/C++B组【第一题】
- 第八届蓝桥杯C/C++B组【第二题】
- 第八届蓝桥杯C/C++B组【第五题】
- 2017年第八届蓝桥杯C/C++B组决赛题解
- 第八届蓝桥杯C语言B组决赛 对局匹配
- C程序设计大赛B题
- 2017第八届蓝桥杯C/C++ B组省赛
- 第八届蓝桥杯国赛C/C++ B组试题
- C count_prime 南京理工大学第八届程序设计大赛
- 2017第八届蓝桥杯 C/C++B组真题及题解
- 2017年第八届蓝桥杯 C/C++B组 真题分析与题解(未完待续)
- 第五届蓝桥杯软件大赛C/C++本科B组解题报告
- 第五届蓝桥杯软件大赛C/C++本科B组决赛解题报告
- List遍历的三种方式
- 【Java】SSH网上商城错误及解决方案总结(一)
- 11个高效率 Linux 终端命令
- Android控件
- 五、MySQL 准备数据
- 第八届蓝桥杯大赛c/c++ b组
- java web -- 简单部署一个程序
- Sublime3126注册码及汉化
- 微信硬件开发系列教程08-蓝牙产品应用方案(airkiss/airsync)
- Event 事件分发和消费机制
- clion下批量删除断点
- oracle 一次获取序号多个值的写法
- 数据结构之单链表
- EditText文字改变与软键盘的监听事件