2017百度之星
来源:互联网 发布:淘宝户外用品店推荐 编辑:程序博客网 时间:2024/06/05 08:27
今天这服务器。。。。
第一题,百度一波儿定理,然后发现就是让求p-1的因子
#include<cstdio>int main(){ int p; int cases; scanf("%d",&cases); while(cases--) { scanf("%d",&p); p--; int ans = 0; for(int i=1;i*i<=p;i++) { if(p%i==0) { if(i!=p/i) ans+=2; else ans+=1; } } printf("%d\n",ans); } return 0;}
第五题 暴力啊! 每次day++取模,特判2月就好
#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int n,m;char s[20];int monthday[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};int main(){ int cases; int year,month,day; scanf("%d",&cases); while(cases--) { scanf("%s",s); year = (s[0]-48)*1000+(s[1]-48)*100+(s[2]-48)*10+(s[3]-48); month = (s[5]-48)*10+(s[6]-48); day = (s[8]-48)*10+(s[9]-48); int ansmonth = month; int ansday = day; while(1) { int tmp = monthday[2]; if((year%4==0&&year%100!=0)||year%400==0) tmp+=1; day += 7; if(month==2&&day>tmp) day%=tmp,month+=1; else if(month!=2&&day>monthday[month]) { day%=monthday[month]; month++; } if(month>12) month%=12,year++; if(month==ansmonth&&day==ansday) { printf("%d\n",year); break; } } } return 0;}
第6题,第一遍dfs看有没有1,没有直接输出-1.第二遍看有几个在边界的 0,是1的话输出0,是0的话输出1,否则输出-1.
#include<cstdio>#include<cstring>int n,m;char str[105][105];int vis[105][105];int dir[4][2] = {0,1,0,-1,1,0,-1,0};void dfs(int x,int y){ vis[x][y] = 1; // printf("%d %d\n",x,y); for(int i=0;i<4;i++) { int nx = x+dir[i][0]; int ny = y+dir[i][1]; if(nx<0||nx>=n||ny<0||ny>=m) continue; if(vis[nx][ny]||str[nx][ny]=='0') continue; dfs(nx,ny); }}int flag = 1;void dfs2(int x,int y){ //printf("%d %d\n",x,y); if(x==0||x==n-1||y==0||y==m-1) flag = 0; vis[x][y] = 1; for(int i=0;i<4;i++) { int nx = x+dir[i][0]; int ny = y+dir[i][1]; if(nx<0||nx>=n||ny<0||ny>=m) continue; if(vis[nx][ny]||str[nx][ny]=='1') continue; dfs2(nx,ny); }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0;i<n;i++) scanf("%s",str[i]); //for(int i=0;i<n;i++) printf("%s",str[i]); int cnt1 = 0; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(!vis[i][j]&&str[i][j]=='1') {dfs(i,j);cnt1++;} } } // printf("%d\n",cnt1); if(cnt1!=1) { printf("-1\n"); continue; } memset(vis,0,sizeof(vis)); int cnt0 = 0; int f = 0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(!vis[i][j]&&str[i][j]=='0'){ flag = 1; dfs2(i,j); if(flag==1) f++; cnt0++; } } } if(f==1) { printf("0\n"); continue; } if(f==0) printf("1\n"); else printf("-1\n"); } return 0;}
ACfun里有人说第二题数据有问题。第二题WA了两次,不知道为什么,应该就是一个镜像并查集啊啊啊。由于服务器的原因 让我一份AC的代码交了多次还要算罚时!!坑爹啊。
阅读全文
0 0
- 2017百度之星
- 2017百度之星初赛
- 2017百度之星初赛
- 2017百度之星 复赛
- 2017百度之星总结
- 2017"百度之星"程序设计大赛
- 2017百度之星 资格赛 1003
- 2017"百度之星"程序设计大赛
- 2017百度之星资格赛题解
- 【2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- [刷题]2017百度之星资格赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017.8.6
- Codeforces Bear and Big Brother
- ios-NSCache简单介绍
- Mac下检测ios应用内是否有私有API
- 1048. 数字加密(20)
- 2017百度之星
- 2017.8.5
- 看 mips 跑
- hdu6108(数学思维+因子)
- HDU
- 算法之堆排序
- struts2方法拦截器
- JS递推方法
- 关于MySQL的commit非规律性失败案例的深入分析