2017百度之星初赛(A)1001,1005,1006解题报告
来源:互联网 发布:新业汽修软件视频 编辑:程序博客网 时间:2024/05/17 09:35
1001 小C的倍数问题
纯签到题,求p-1的因数个数,暴力枚举即可
#include<bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); int t,p,cnt,n,num; cin>>t; while(t--) { cnt=0; cin>>p; n=p-1; for(int i=1;i*i<=n;++i){ if(n%i==0){ cnt++; if(i*i!=n) cnt++; } } cout<<cnt<<endl; } return 0;}
1005 今夕何夕
利用蔡勒公式,可以知道任何一天的星期数,特判一下闰年的2.29就可以了。枚举年数
#include<bits/stdc++.h>using namespace std;int Cal(int y,int m,int d){ int c,w; bool flag=false; if(y%400==0||(y%4==0&&y%100!=0)) flag=true; if(flag==false&&m==2&&d==29) return -1; if(m<=2){ y--; m+=12; } c=y/100; y%=100; w=y+y/4+c/4-2*c+13*(m+1)/5+d-1; while(w<0) w+=7; w%=7; return w;}int main(){ //freopen("in.txt","r",stdin); int t,y,m,d,w,c,n; scanf("%d",&t); while(t--) { scanf("%d-%d-%d",&y,&m,&d); w=Cal(y,m,d); while(1) { ++y; n=Cal(y,m,d); if(w==n) break; } printf("%d\n",y); } return 0;}
1006 度度熊的01世界
把第一个遇到的1用dfs赋值为2,然后扫一遍图看是否有1,如果有就说明有多块1,输出-1。
然后再把图扫一遍,碰到0就进去dfs。如果在任何一次整个dfs过程中没有碰到边界,说明这一块0是被1包围的。然后再继续找,如果有多个0被1包围,则输出-1,如果只有一个输出0,一个都没有输出1。
#include<bits/stdc++.h>using namespace std;const int maxn=110;char g[maxn][maxn];int n,m;int dis[4][2]={{1,0},{-1,0},{0,1},{0,-1}};bool visit[maxn][maxn];bool flag_1;bool check(int x,int y){ if(x<1||x>n||y<1||y>m) return false; return true;}void dfs(int x,int y){ int dx,dy; g[x][y]='2'; visit[x][y]=false; for(int i=0;i<4;++i){ dx=x+dis[i][0]; dy=y+dis[i][1]; if(check(dx,dy)) if(g[dx][dy]=='1'&&visit[dx][dy]) dfs(dx,dy); }}bool solve1(){ for(int i=1;i<=n;++i) for(int j=1;j<=m;++j){ if(g[i][j]=='1'){ return false; } } return true;}void Searc(int x,int y){ visit[x][y]=false; int dx,dy; for(int i=0;i<4;++i){ dx=x+dis[i][0]; dy=y+dis[i][1]; if(check(dx,dy)){ if(visit[dx][dy]) Searc(dx,dy); } else flag_1=false; }}bool is_one(){ for(int i=1;i<=n;++i) for(int j=1;j<=m;++j){ if(g[i][j]=='0'&&visit[i][j]){ flag_1=true; Searc(i,j); if(flag_1) return true; } } return false;}int main(){ ios::sync_with_stdio(false); //freopen("in.txt","r",stdin); while(cin>>n>>m) { memset(g,0,sizeof(g)); memset(visit,true,sizeof(visit)); for(int i=1;i<=n;++i) cin>>g[i]+1; bool flag=false; for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j) if(g[i][j]=='1'){ flag=true; dfs(i,j); break; } if(flag) break; } if(flag==false||(!solve1())){ cout<<-1<<endl; continue; } if(!is_one()) cout<<1<<endl; else if(is_one()) cout<<-1<<endl; else cout<<0<<endl; } return 0;}
阅读全文
1 0
- 2017百度之星初赛(A)1001,1005,1006解题报告
- 【百度之星2014~初赛解题报告】
- 2016"百度之星" - 初赛(Astar Round2A)解题报告
- 2016"百度之星" - 初赛(Astar Round2A)解题报告
- 2016"百度之星" - 初赛(Astar Round2B)解题报告
- 2016"百度之星" - 初赛(Astar Round2B)解题报告
- 2016"百度之星" - 初赛(Astar Round2B)解题报告
- 2016"百度之星"-初赛(AstarRound2A)解题报告
- 2014百度之星初赛第一轮解题报告:grids
- 2014百度之星初赛第一轮解题报告:CycleCocycle
- 2014百度之星初赛第一轮解题报告:information
- 2014百度之星初赛第一轮解题报告:party
- 2014百度之星初赛第二轮解题报告:best_financing
- 2014百度之星初赛第二轮解题报告:chess
- HDU4828 Grids 百度之星初赛1002解题报告
- 2015 百度之星初赛1 解题报告
- 【百度之星2014~初赛(第二轮)解题报告】Chess
- 【百度之星2014~初赛(第二轮)解题报告】JZP Set
- 把一个整数转换成8进制输出
- 抽象类VS接口
- 机器学习笔记——Scikit-learn库中的数据预处理:独热编码(二)
- 更改win10默认字体
- 第3章软件也要拼脸的 3.3详解4种基本布局
- 2017百度之星初赛(A)1001,1005,1006解题报告
- 8.14 lcs 2691
- 8.14 总结
- 【XSY1544】fixed 数学 强连通图计数
- 王学岗ToolBar,DrawLayout+Navigation的使用(三)
- 2017/8/14
- 分布式-微服务-集群的区别
- 观察者模式与事件监听机制
- MySQL——修改root密码的3种方法