zoukankan      html  css  js  c++  java
  • 百度(pending)之星 2017 初赛A

    hdu6108

    数学表达式推一推,可知答案就是求(p-1)的因子数目+2

    #include<bits/stdc++.h>
    using namespace std;
    int count(int x)
    {
    	x--;
        int len=sqrt(x);
        //printf("shit%d
    ",len);
        int sum=0;
        for(int i=2;i<=len;i++)
        {
            if(x%i==0)
            {
            	if(x/i==i)
            		sum++;
            	else
            		sum+=2;
    		}
        }
        return sum;
    }
    int main()
    {
        int n,t;
        while(scanf("%d",&t)==1)
        {
            for(int i=1;i<=t;i++)
            {
                scanf("%d",&n);
              //  printf("fuck %d
    ",count(n));
                int ans=2+count(n);
                printf("%d
    ",ans);
            }
        }
        return 0;
    }
    

     hdu6112

    算日期的细节题。需要考虑全面,当然每次做日期题都是差不多的套路。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=20000;
    int day[maxn];
    struct Date
    {
    	int y;//year
    	int m;//month
    	int d;//day in month
    };
    bool isLeap(int y)//判断是否是闰年
    {
    	return y%4==0&&y%100!=0||y%400==0;//真返回为1,假为0
    }
    int daysOfMonth(int y,int m)
    {
    	int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    	if(m!=2)
    		return day[m-1];
    	else 
    		return 28+isLeap(y);
    }
    int daysOfDate(Date d)//计算一共的天数
    {
    	int days=d.d;
    	days += day[d.y-1];
    	for(int m=1;m<d.m;m++)//计算月
    		days+=daysOfMonth(d.y,m);
    	//days+=d.d;
    	return days;
    }
    bool judge(Date d2)
    {
    	if(isLeap(d2.y)==0&&d2.m==2&&d2.d==29)
    		return false;
    	return true;
    }
    void init()
    {
    	day[0] = 0;
    	for(int y=1;y<maxn;y++)
    		day[y] = day[y-1] +365 +isLeap(y);
    }
    int main()
    {
    	Date d1,d2;
    	int t;
    	scanf("%d",&t);
    	init();
    	while(t--)
    	{
    		scanf("%d-%d-%d", &d1.y, &d1.m, &d1.d);
    		d2.y=d1.y;d2.m=d1.m;d2.d=d1.d;
    		int days1=daysOfDate(d1);
    		while(1)
    		{
    			d2.y++;
    			if(!judge(d2))	continue;
    			int days2=daysOfDate(d2);
    			int ans=days2-days1;
    			if(ans%7==0)
    				break;
    		}
    		printf("%d
    ",d2.y);
    	}
    	return 0;
    }
    

     hdu6113

    遍历一下图就能解决的题。根据要求只要提取两个关键信息:1的连通块数目,0的不靠墙连通块数目即可。我的flagy是多余的,可以代替。

    #include<bits/stdc++.h>
    using namespace std;
    int dir[4][2]={0,1,1,0,-1,0,0,-1};
    const int maxn=108;
    char mp[maxn][maxn];
    bool vis[maxn][maxn];
    int n,m;
    bool judge(int x,int y)
    {
    	if(x<0||x>=n)	return false;
    	if(y<0||y>=m)	return false;
    	return true;
    }
    void dfs1(int x,int y)
    {
    	int nx,ny;
    	vis[x][y]=true;
    	for(int i=0;i<4;i++)
    	{
    		nx=x+dir[i][0];
    		ny=y+dir[i][1];
    		if(judge(nx,ny)&&vis[nx][ny]==false&&mp[nx][ny]=='1')
    			dfs1(nx,ny);
    	}
    }
    bool dfs2(int x,int y)
    {
    	int nx,ny;
    	bool flag=true;
    	for(int i=0;i<4;i++)
    	{
    		nx=x+dir[i][0];
    		ny=y+dir[i][1];
    		if(judge(nx,ny)==false)
    			flag=false;
    	}
    	vis[x][y]=true;
    	for(int i=0;i<4;i++)
    	{
    		nx=x+dir[i][0];
    		ny=y+dir[i][1];
    		if(judge(nx,ny)&&vis[nx][ny]==false&&mp[nx][ny]=='0')
    		{
    			if(dfs2(nx,ny)==false)
    				flag=false;
    		}
    	}
    	return flag;
    }
    int main()
    {
    	while(scanf("%d%d",&n,&m)==2)
    	{
    		memset(vis,false,sizeof(vis));
    		for(int i=0;i<n;i++)
    			scanf("%s",mp[i]);
    		int sx,sy;
    		sx=sy=0;
    		bool flagy=false;
    		for(int i=0;i<n;i++)
    			for(int j=0;j<m;j++)
    			{
    				if(vis[i][j]==false)
    				{
    					if(mp[i][j]=='1')
    					{
    						sx++;
    						dfs1(i,j);
    					}
    					else
    					{
    						if(dfs2(i,j)==true)
    						{
    							sy++;
    							flagy=true;
    						}
    					}
    				}
    			}
    	//	printf("%d %d ",sx,sy);		if(flagy==false)	printf("0
    ");	else	printf("1
    ");
    		if(sx==1&&sy==1&&flagy==true)
    			printf("0
    ");
    		else if(sx==1&&flagy==false)
    			printf("1
    ");
    		else
    			printf("-1
    ");
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Python学习笔记2——数据类型
    Python学习笔记1——环境配置
    Dagger2 探索记3——两大进阶组件(二)
    NLP 计算机视觉 cv 机器学习 ,入们基础
    Android studio 常用快捷键
    uiautomator 1使用简介
    在Android源码中如何吧so库打包编译进入apk, 集成第三方库(jar和so库)
    android框架Java API接口总注释/**@hide*/和internal API
    Google android开发者 中国官方文档开放了呀
    android aidl通信 RemoteCallbackList客户端注册回调
  • 原文地址:https://www.cnblogs.com/bitch1319453/p/7351414.html
Copyright © 2011-2022 走看看