蓝桥杯

暴力搜索

等差素数列

 #include<bits/stdc++.h> 
    using namespace std;
    int prime(int x)
    {
    	int i;
    	int flag=0;
    	for(i=2;i<=sqrt(x);i++)
    	{
    		if(x%i==0)
    	{
    		flag=1;
    		break;
    	}	
    	}
    	if(flag==0)
    	return 1;
    	else return 0;
     } 
    int main()
    {
    int i,j;
    int x;
    int len=10;
    int n=0;
    for(i=2;i<999999;i++)
    {
    	x=i;
    	if(n==10)
    	break;
    	len=10;
    	if(prime(x)!=1)
    	continue;
    		while(1)
    		{
    			if(prime(x))
    			{
    			x=x+len;
    			n++;
    			//cout<<x<<" ";
    			if(len==999)
    			{
    				n=0;
    			break;	
    			}
    				if(n==10)
    		{
    			cout<<len<<" ";
    			break;
    		}
    			if(!prime(x))
    	{
    			x=i;
    			len++;
    			n=0;
    		}
    	}
    		}
    	}
    return 0;
    }

日期问题
标题:日期问题

小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。

比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。

给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?

输入

一个日期,格式是"AA/BB/CC"。 (0 <= A, B, C <= 9)

输入

输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。

样例输入

02/03/04

样例输出

2002-03-04
2004-02-03
2004-03-02

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms

代码:

#include<bits/stdc++.h>
using namespace std;
typedef struct{
	int year;
	int month;
	int day;
}date; 
bool compare(date &d1,date &d2)
{
	if(d1.year!=d2.year)
	return d1.year<d2.year;
	if(d1.month != d2.month)
	{
        return d1.month < d2.month;
    }
    return d1.day < d2.day;
}
int isrun(int year)
{
	if((year%4==0&&year%100!=0)||year%400==0)
	return 1;
	else return 0;
}
int judge(int year,int month,int day)
{
	int flag=1;
	if(year<1960||year>2059)
	flag=0;
	switch(month)
	{
	case 1:case 3:case 5: case 7: case 8: case 10: case 12:
	{
		if(day>31)
		flag=0;
		break;
	}
	case 4:case 6:case 9:case 11:
	{
		if(day>30)
		flag=0;
		break;
	}
	case 2:
	{
		if(isrun(year)==1)
		{
			if(day>29)
			flag=0;
			break;
		}
		if(isrun(year)!=1)
		{
			if(day>28)
			flag=0;
			break;
		}
	}
}
return flag;	   
	      
}
int main()
{
int year,month,day;
scanf("%d/%d/%d",&year,&month,&day);
date d[6]={{1900+year,month,day},
{2000+year,month,day},
{1900+day,year,month},
{2000+day,year,month},
{1900+day,month,year},
{2000+day,month,year}
};
sort(d,d+6,compare);
for(int i=0;i<6;i++)
{
	if(judge(d[i].year,d[i].month,d[i].day)!=0)
	{
	 printf("%02d-%02d-%02d\n",d[i].year,d[i].month,d[i].day);
}
}
return 0;	
 } 

本题小结:
1.结构体排序也可调用sort()
2.输出需要一定格式时用printf较为方便(%02d的意思为结果占两列,不足左边补零)
3.scanf输入数据是若有多余的输入,则写代码时要将该符号写进scanf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值