首页 > 代码库 > 百度之星初赛一 补题
百度之星初赛一 补题
1001 小C的倍数问题
题意:
根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数。反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3的倍数。
现在给定进制P,求有多少个B满足P进制下,一个正整数是B的倍数 的充分必要条件是每一位加起来的和是B的倍数。
我真是一句mmp啊 wcnmlgb 题目读了半天没读懂 后面的签到题也没心思写了
看了别人的题解 也算是明白了 自己真的是菜的可以啊
详细解答:http://blog.csdn.net/qq_36306833/article/details/77127051
#include <bits/stdc++.h>using namespace std;int main (){ ios::sync_with_stdio(false); int t; cin >> t; while (t--) { int n; cin >> n; n--; int res = 0; int i=1; for(;i*i<n;i++) { if(n%i ==0 ) res+=2; } if(i*i == n) res++; cout<< res <<endl; }}
1006 度度熊的01世界
题意
度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成。
现在给你一个n*m的图像,你需要分辨他究竟是0,还是1,或者两者均不是。
图像0的定义:存在1字符且1字符只能是由一个连通块组成,存在且仅存在一个由0字符组成的连通块完全被1所包围。
图像1的定义:存在1字符且1字符只能是由一个连通块组成,不存在任何0字符组成的连通块被1所完全包围。
连通的含义是,只要连续两个方块有公共边,就看做是连通。
完全包围的意思是,该连通块不与边界相接触。
帮FB写 最后感觉没啥问题 wa在一个细节上 四周补0的时候 没写好 把N写成M了
GG
#include <bits/stdc++.h>using namespace std;int N,M;char s[105][105];int dx[]={-1,0,0,1}; //4个方向的int dy[]={0,1,-1,0};void dfs(int x,int y){ s[x][y] = ‘#‘; for(int i=0;i<4;i++) { int fx = x+dx[i]; int fy = y+dy[i]; if(s[fx][fy]==‘1‘&& fx>=0 && fy<=M && fx<=N && fy>=0) { dfs(fx,fy); } }}void dfs0(int x,int y){ s[x][y] = ‘#‘; for(int i=0;i<4;i++) { int fx = x+dx[i]; int fy = y+dy[i]; if(s[fx][fy]==‘0‘&& fx>=0 && fy<=M && fx<=N && fy>=0) { dfs0(fx,fy); } }}int main (){ while (~scanf("%d %d ",&N,&M)) { for(int i =1; i <=N ; i++) { scanf("%s",s[i]+1); } M++;N++; for(int i=0;i<=M;i++) s[0][i] = ‘0‘; for(int i=0;i<=N;i++) s[i][0] =‘0‘; for(int i=0;i<=N;i++) s[i][M]=‘0‘; for(int i=0;i<=M;i++) s[N][i] =‘0‘; int sum0=0 ,sum1 = 0; for(int i=0;i<=N;i++) { for(int j=0;j<=M;j++) { if(s[i][j]==‘1‘) { dfs(i,j); sum1++; } } } for(int i=0;i<=N;i++){ for(int j=0;j<=M;j++) { if(s[i][j]==‘0‘) { dfs0(i,j); sum0++; } } } if(sum0 ==1 && sum1 == 1) cout << 1 <<endl; else if(sum0 ==2 && sum1 ==1 ) cout << 0<<endl; else cout<<-1<<endl; } return 0;}
1005 今夕何夕
题意
今天是2017年8月6日,农历闰六月十五。
小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。
为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。
小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。
小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。
为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。
小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。
#include<bits/stdc++.h>using namespace std;bool is_run(int y){ return ((y%4)==0&& (y%100)!=0 || y%400==0);}int main(){ int t; scanf("%d",&t); while(t--) { int y,m,d; scanf("%d-%d-%d",&y,&m,&d); int sum =0; while (1){ if(m==2 && d==29) { sum = (sum+365*4+is_run(y))%7; y = y+4; if(sum==0 && is_run(y)) break; } else { if(m>2) { sum = (sum+365+is_run(y+1))%7; y++; if(sum==0) break; } else { sum = (sum+365+is_run(y))%7; y++; if(sum==0) break; } } } printf("%d\n",y); } return 0;}
百度之星初赛一 补题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。