Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:329msIn Reply To:329ms Posted by:openxxx at 2010-02-13 14:40:55 附代码: #include<iostream> #include<cstdio> using namespace std; int h[150000]; unsigned int a[100005][6]; int hash(int k) { unsigned int i,h=1; for(i=0;i<6;i++) { h*=a[k][i]; } h=h%149997; return h; } bool judge(int x,int y) { int i,j,k; bool ch; for(i=0;i<6;i++) { ch=true; for(j=0;j<6;j++) { if(a[x][j]!=a[y][(j+i)%6]) { ch=false; break; } } if(ch) return true; } for(i=0;i<6;i++) { ch=true; for(j=0,k=5;j<6;j++,k--) { if(a[x][j]!=a[y][(k+i)%6]) { ch=false; break; } } if(ch) return true; } return false; } int main() { int n,i,j,k,t,x,kk; bool ch=true,th,kh=true; char c; cin>>n; c=getchar(); for(i=1;i<=n;i++) { for(j=0;j<=5;j++) { x=0; c=getchar(); while(c!=' '&&c!='\n') { x=x*10; x+=(c-48); c=getchar(); } a[i][j]=x; } k=hash(i); t=1; kk=k; if(h[kk]==0) th=false; while(h[kk]!=0) { th=judge(h[kk],i); if(th) { ch=false; printf("Twin snowflakes found.\n"); break; } kk=(k+t*t)%149997; t++; } if(!th) h[kk]=i; } if(ch) printf("No two snowflakes are alike.\n"); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator