百度之星初赛一|百度之星初赛一 补题

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 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


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 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 <

1005 今夕何夕 题意 今天是2017年8月6日,农历闰六月十五。

小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。

为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。

小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。
#include 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; }


转载于:https://www.cnblogs.com/Draymonder/p/7353207.html

    推荐阅读