2017百度之星初赛(A)1001,1005,1006解题报告

1001 小C的倍数问题

纯签到题,求p-1的因数个数,暴力枚举即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     ios::sync_with_stdio(false);
 6     int t,p,cnt,n,num;
 7     cin>>t;
 8     while(t--)
 9     {
10         cnt=0;
11         cin>>p;
12         n=p-1;
13         for(int i=1;i*i<=n;++i){
14             if(n%i==0){
15                 cnt++;
16                 if(i*i!=n)
17                     cnt++;
18             }
19         }
20         cout<<cnt<<endl;
21     }
22     return 0;
23 }

1005 今夕何夕

利用蔡勒公式,可以知道任何一天的星期数,特判一下闰年的2.29就可以了。枚举年数

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int Cal(int y,int m,int d)
 4 {
 5     int c,w;
 6     bool flag=false;
 7     if(y%400==0||(y%4==0&&y%100!=0))
 8         flag=true;
 9     if(flag==false&&m==2&&d==29)
10         return -1;
11     if(m<=2){
12         y--;
13         m+=12;
14     }
15     c=y/100;
16     y%=100;
17     w=y+y/4+c/4-2*c+13*(m+1)/5+d-1;
18     while(w<0)
19         w+=7;
20     w%=7;
21     return w;
22 }
23 int main()
24 {
25     //freopen("in.txt","r",stdin);
26     int t,y,m,d,w,c,n;
27     scanf("%d",&t);
28     while(t--)
29     {
30         scanf("%d-%d-%d",&y,&m,&d);
31         w=Cal(y,m,d);
32         while(1)
33         {
34             ++y;
35             n=Cal(y,m,d);
36             if(w==n)
37                 break;
38         }
39         printf("%d\n",y);
40     }
41     return 0;
42 }

1006 度度熊的01世界

把第一个遇到的1用dfs赋值为2,然后扫一遍图看是否有1,如果有就说明有多块1,输出-1。 
然后再把图扫一遍,碰到0就进去dfs。如果在任何一次整个dfs过程中没有碰到边界,说明这一块0是被1包围的。然后再继续找,如果有多个0被1包围,则输出-1,如果只有一个输出0,一个都没有输出1。

  1 #include<bits/stdc++.h>
  2 using namespace std;
  3 const int maxn=110;
  4 char g[maxn][maxn];
  5 int n,m;
  6 int dis[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
  7 bool visit[maxn][maxn];
  8 bool flag_1;
  9 bool check(int x,int y)
 10 {
 11     if(x<1||x>n||y<1||y>m)
 12         return false;
 13     return true;
 14 }
 15 void dfs(int x,int y)
 16 {
 17     int dx,dy;
 18     g[x][y]=‘2‘;
 19     visit[x][y]=false;
 20     for(int i=0;i<4;++i){
 21         dx=x+dis[i][0];
 22         dy=y+dis[i][1];
 23         if(check(dx,dy))
 24             if(g[dx][dy]==‘1‘&&visit[dx][dy])
 25                 dfs(dx,dy);
 26     }
 27 }
 28 bool solve1()
 29 {
 30     for(int i=1;i<=n;++i)
 31         for(int j=1;j<=m;++j){
 32             if(g[i][j]==‘1‘){
 33                 return false;
 34             }
 35         }
 36     return true;
 37 }
 38 void Searc(int x,int y)
 39 {
 40     visit[x][y]=false;
 41     int dx,dy;
 42     for(int i=0;i<4;++i){
 43         dx=x+dis[i][0];
 44         dy=y+dis[i][1];
 45         if(check(dx,dy)){
 46             if(visit[dx][dy])
 47                 Searc(dx,dy);
 48         }
 49         else
 50             flag_1=false;
 51     }
 52 }
 53 bool is_one()
 54 {
 55
 56     for(int i=1;i<=n;++i)
 57         for(int j=1;j<=m;++j){
 58             if(g[i][j]==‘0‘&&visit[i][j]){
 59                 flag_1=true;
 60                 Searc(i,j);
 61                 if(flag_1)
 62                     return true;
 63             }
 64         }
 65     return false;
 66 }
 67 int main()
 68 {
 69     ios::sync_with_stdio(false);
 70     //freopen("in.txt","r",stdin);
 71     while(cin>>n>>m)
 72     {
 73         memset(g,0,sizeof(g));
 74         memset(visit,true,sizeof(visit));
 75         for(int i=1;i<=n;++i)
 76             cin>>g[i]+1;
 77         bool flag=false;
 78         for(int i=1;i<=n;++i){
 79             for(int j=1;j<=m;++j)
 80                 if(g[i][j]==‘1‘){
 81                     flag=true;
 82                     dfs(i,j);
 83                     break;
 84                 }
 85             if(flag)
 86                 break;
 87         }
 88         if(flag==false||(!solve1())){
 89             cout<<-1<<endl;
 90             continue;
 91         }
 92         if(!is_one())
 93             cout<<1<<endl;
 94         else if(is_one())
 95             cout<<-1<<endl;
 96         else
 97             cout<<0<<endl;
 98     }
 99     return 0;
100 }

时间: 08-16

2017百度之星初赛(A)1001,1005,1006解题报告的相关文章

2016&quot;百度之星&quot; - 初赛(Astar Round2A)解题报告

此文章可以使用目录功能哟↑(点击上方[+]) 有点智商捉急,第一题卡了好久,看来不服老,不服笨是不行的了...以下是本人目前的题解,有什么疑问欢迎提出 链接→2016"百度之星" - 初赛(Astar Round2A)  Problem 1001 All X Accept: 0    Submit: 0 Time Limit: 2000/1000 mSec(Java/Others)    Memory Limit : 65536 KB  Problem Description F(x,

2014 百度之星初赛题解1001 - Energy Conversion

Problem Description 魔法师百小度也有遇到难题的时候-- 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的能量和大量的脑力. 过了许久,百小度终于读懂魔法文字的含义:石门里面有一个石盘,魔法师需要通过魔法将这个石盘旋转X度,以使上面的刻纹与天相对应,才能打开石门. 但是,旋转石盘需要N点能量值,而为了解读密文,百小度的能量值只剩M点了!破坏石门是不可能的,因为那将需要更多的能量.不过,幸运的是,作为魔法师的百小度可以耗费V点能量,使

二分查找 2015百度之星初赛1 1001 超级赛亚ACMer

题目传送门 1 /* 2 二分找到不大于m的最大的数,记做p,只要a[p] + k <= a[p+1]就继续 3 注意:特判一下当没有比m小的数的情况:) 4 */ 5 #include <cstdio> 6 #include <cstring> 7 #include <cmath> 8 #include <algorithm> 9 using namespace std; 10 11 typedef long long ll; 12 13 const

(最小费用流)hdu 6118(2017百度之星初赛B 1005) 度度熊的交易计划

度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 260    Accepted Submission(s): 83 Problem Description 度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片

2017&quot;百度之星&quot;程序设计大赛 - 复赛1005&amp;&amp;HDU 6148 Valley Numer【数位dp】

Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 311    Accepted Submission(s): 165 Problem Description 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Number,像山谷一样的数字. 当一个数字,从左到右依次看过去数字没有出现先递增接

2017百度之星初赛

1001 小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数.反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3的倍数. 现在给定进制P,求有多少个B满足P进制下,一个正整数是

2017百度之星初赛B Chess

Chess Accepts: 1805 Submissions: 5738 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子.一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使其互不攻击的方案数.他经过思考,得出了答案.但他仍不满足,想

2017百度之星初赛A 今夕何夕

今夕何夕 Accepts: 1345 Submissions: 5533 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日

HDU 6119 2017百度之星初赛B 小小粉丝度度熊 (二分)

小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 197    Accepted Submission(s): 78 Problem Description 度度熊喜欢着喵哈哈村的大明星——星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星