标签:
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1501 Accepted Submission(s): 399
#include<stdio.h> #include<string.h> #include<string> #include<math.h> #include<algorithm> #define LL long long #define PI atan(1.0)*4 #define DD doublea #define MAX 100100 #define mod 10007 using namespace std; int s[MAX][15]; char s1[MAX][15]; int op1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int op2[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int five(int x)//判断后五位 { int i,j; char y=s[x][6]; int flag=1; for(i=7;i<11;i++) { if(s[x][i]!=y) { flag=0; break; } } if(flag==1) return 1; flag=1; for(i=7;i<11;i++) { if(s[x][i]!=s[x][i-1]+1) { flag=0; break; } } if(flag==1) return 1; else return 0; } int judge(int x)//判断闰年 { if((x%4==0&&x%100!=0)||x%400==0) return 1; else return 0; } int eight(int x) //判断后八位 { int i,j; int flag=1; int sum=s[x][3]; int mouth=s[x][7]*10+s[x][8]; int day=s[x][9]*10+s[x][10]; for(i=4;i<=6;i++) sum=sum*10+s[x][i]; if(sum<1980||sum>2016||mouth<1||mouth>12) return 0; if(sum==1980) { if(mouth<7||mouth>12) return 0; if(day==0||day>op1[mouth]) return 0; } if(judge(sum)) { if(day==0||day>op2[mouth]) return 0; } if(!judge(sum)) { if(day==0||day>op1[mouth]) return 0; } return 1; } int main() { int t,i,j,n,m; LL ans,a,b; scanf("%d",&t); while(t--) { ans=0; scanf("%d",&n); scanf("%lld%lld",&a,&b); for(i=1;i<=n;i++) { scanf("%s",s1[i]); for(j=0;j<11;j++) { s[i][j]=s1[i][j]-‘0‘; } } for(i=1;i<=n;i++) { if(five(i)) ans+=a; else if(eight(i)) ans+=a; else ans+=b; } printf("%lld\n",ans); } return 0; }
BestCoder Round #69 (div.2)(hdu5611)
标签:
原文地址:http://www.cnblogs.com/tonghao/p/5229062.html