• 百度之星初赛A轮 hdu 6108 6112 6113


    hdu 6108

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 
     5 int main(){
     6     int t;
     7     cin>>t;
     8     while(t--){
     9         ll x;
    10         scanf("%I64d",&x);
    11         ll ans=0;
    12         for(int i=1;i*i<=x;i++){
    13             if((x-1)%i==0) {
    14                 ans+=2;
    15                 if(i*i==(x-1)) ans--;
    16             }
    17         }
    18         printf("%I64d
    ",ans);
    19     }
    20 }

    hdu 6112 

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 
     5 char s[30];
     6 int r[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
     7 int p[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
     8 
     9 int hh(int y){
    10     if((y%4==0&&y%100!=0)||(y%400==0)) return 1;
    11     else return 0;
    12 }
    13 
    14 int Change(int year,int month,int day)//根据日期判断出星期几
    15 {
    16     if(month==1||month==2)
    17     {
    18         month+=12;
    19         year--;
    20     }
    21     int c=year/100;
    22     int y=year%100;
    23     int m=month;
    24     int d=day;
    25     int W=c/4-2*c+y+y/4+26*(m+1)/10+d-1;
    26     if(W<0)
    27         return (W+(-W/7+1)*7)%7;
    28     return W%7;
    29 }
    30 
    31 int cc(int y,int m,int d){
    32     if(hh(y)){
    33         if(r[m]>=d) return 1;
    34         else return 0;
    35     }
    36     else {
    37         if(p[m]>=d) return 1;
    38         else return 0;
    39     }
    40 }
    41 int main(){
    42     int t;
    43     cin>>t;
    44     while(t--){
    45         scanf("%s",s);
    46         int y=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');
    47         int m=(s[5]-'0')*10+(s[6]-'0');
    48         int d=(s[8]-'0')*10+(s[9]-'0');
    49         int t=0;
    50         int day=Change(y,m,d);
    51         for(int i=1+y;i<=9999;i++){
    52             if(day==Change(i,m,d)&&cc(i,m,d)){
    53                 printf("%d
    ",i);break;
    54             }
    55         }
    56     }
    57 }

    hdu 6113

    思路:把外围的0的联通快去掉,再判断1的联通快个数,和0的联通快个数

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=1e5+10;
     4 
     5 int fa[N];
     6 char s[102][102];
     7 int n,m;
     8 int b[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
     9 int vis[N],a[N];
    10 
    11 int check(int x,int y){
    12     if(x<=0|x>n||y<=0||y>m) return 0;
    13     return 1;
    14 }
    15 int jj(int x,int y)
    16 {
    17     return (x-1)*m+y;
    18 }
    19 
    20 int Find(int x){
    21     if(fa[x]==x) return x;
    22     return fa[x]=Find(fa[x]);
    23 }
    24 void hh(int x,int y){
    25     int xx=Find(x);
    26     int yy=Find(y);
    27     if(xx!=yy)
    28     fa[xx]=yy;
    29 }
    30 
    31 int main(){
    32     while(scanf("%d%d",&n,&m)!=EOF){
    33     memset(vis,0,sizeof(vis));
    34     memset(a,0,sizeof(a));
    35     for(int i=1;i<=N;i++) fa[i]=i;
    36     for(int i=1;i<=n;i++)
    37         scanf("%s",s[i]+1);
    38     for(int i=1;i<=n;i++){
    39         for(int j=1;j<=m;j++){
    40             for(int k=0;k<4;k++){
    41                 int xx=i+b[k][0];
    42                 int yy=j+b[k][1];
    43                 if(check(xx,yy)&&s[i][j]==s[xx][yy]){
    44                     hh(jj(i,j),jj(xx,yy));
    45                 }
    46             }
    47         }
    48     }
    49 
    50     for(int i=1;i<=n;i++){
    51         for(int j=1;j<=m;j++){
    52             int zz=Find(jj(i,j));
    53             for(int k=0;k<4;k++){
    54                 int xx=i+b[k][0];
    55                 int yy=j+b[k][1];
    56                 if(check(xx,yy)==0)
    57                     vis[zz]=1;
    58             }
    59         }
    60     }
    61     int on=0,ze=0;
    62     for(int i=1;i<=n;i++){
    63         for(int j=1;j<=m;j++){
    64             if(s[i][j]=='1'){
    65                 int xx=Find(jj(i,j));
    66                 if(!a[xx]) on++;
    67                 a[xx]=1;
    68             }
    69             else {
    70                 int xx=Find(jj(i,j));
    71                 if(!vis[xx]&&!a[xx]) ze++;
    72                 a[xx]=1;
    73             }
    74         }
    75     }
    76    // cout<<on<<" "<<ze<<endl;
    77     if(on!=1) cout<<-1<<endl;
    78     else {
    79         if(ze==1) cout<<0<<endl;
    80         else if(ze==0) cout<<1<<endl;
    81         else cout<<-1<<endl;
    82     }
    83     }
    84 }
  • 相关阅读:
    插件开发遇到的坑------final 型变量,编译过程被优化
    java.lang.NoClassDefFoundError 错误解决思路
    Android stadio bug
    android去掉button默认的点击阴影
    Andrid 打印调用堆栈
    Gradle 设置本地meaven
    Android log 里面快速搜索错误堆栈 ( 关键字)
    java doc 编写
    android 怎么判断activity 从哪里启动的
    Android Stadio调试gradle 插件 || Android Stadio 远程调试 || Anroid APT调试
  • 原文地址:https://www.cnblogs.com/hhxj/p/7352547.html
Copyright © 2020-2023  润新知