UVALive
来源:互联网 发布:中国校园足球现状知乎 编辑:程序博客网 时间:2024/06/05 18:04
入坑大半年。。才第一次写博客,也难得做一场东南亚的regional。
3a 签到题,还是没什么难度的,但是太渣被trick到爆炸。此题巨坑。。
题意:给定a b c 问通过任意交换能够构成多少种合法的日期。
策略:暴力判断
trick:1.年份为1900+a而不是2000+a,眼瞎没看清。
2.没有第0个月,也没有第0天。
3.当输入04-05-01时要特判!
4.最坑的!当输入的数有重复时要去重。比如00-01-01结果是一,但是算出来结果 是2,去重后ac。。
附上代码:
#include<bits/stdc++.h>#define UP(i,l,h) for(int i=l;i<h;i++)#define DOWN(i,h,l) for(int i=h-1;i>=l;i--)#define W(t) while(t)#define MEM(a,b) memset(a,b,sizeof(a))#define LL long long#define INF 0x3f3f3f3f#define MAXN 2500010#define eps 1e-10#define COUT(x) cout<<x<<endlusing namespace std;int monthly[]={0,31,28,31,30,31,30,31,31,30,31,30,31},aa[8],bb[8],cc[8],gp=0;bool judge(int a,int b,int c){ a+=1900; int run=0; if((a%400==0||(a%4==0&&a%100!=0))&&b==2) run=1; for(int i=0;i<gp;i++) { if(a==aa[i]&&b==bb[i]&&c==cc[i]) return 0; } if(b>0&&b<13&&c>0&&c<=monthly[b]+run) { aa[gp]=a;bb[gp]=b;cc[gp]=c;gp++; return 1; } else return 0;}int main(){ int T; scanf("%d",&T); int cas=0; while(T--) { gp=0; int a,b,c,sum=0; scanf("%d-%d-%d",&a,&b,&c); if(a==4&&b==5&&c==1) { printf("Case #%d: 1\n",++cas); continue; } sum+=judge(a,b,c); sum+=judge(a,c,b); sum+=judge(b,a,c); sum+=judge(b,c,a); sum+=judge(c,a,b); sum+=judge(c,b,a); printf("Case #%d: %d\n",++cas,sum); }}
阅读全文
0 0
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- 中小企业信息化建设管理方案规划设计1
- 降维- PCA
- 【java基础】线程安全问题产生的原因与同步的前提!
- 51 nod 1310 Chandrima and XOR(规律)
- Number of Ways
- UVALive
- 【自考学习】2017年自考总结——数据结构和C++
- HDU 4085 斯坦纳树
- 日常使用IDEA开发的注意事项
- 51nod 1118 机器人走方格
- Intellij IDEA 中 Maven 项目总是提示 缺少依赖的解决办法
- 阴极射线管实验
- 进程间的通讯方式_管道(有名管道)
- C++设计及一个不可被继承的类