双哈希 65pts Dalao求助 P10467
查看原帖
双哈希 65pts Dalao求助 P10467
774204
A_chicken_boy楼主2024/7/16 15:33
#include <bits/stdc++.h>
using namespace std ;
#define f(i,a,b) for ( int i = (a) ; i<=(b) ; ++i )
#define base 211
#define base2 1999
#define mod 2111
#define N 100005
int n ;
int a[10] ;
int p[3000][3000] ;	
unsigned long long  s1 , s2 , s3 , s4 ;
int main ( ){
	cin >> n ;
	f(i,1,n){
		f(j,1,6){
			cin >> a[j] ;
		}
		f(j,1,6){
		 	s1 = s2 = 0 ;
			int cnt = j ;
			f(i,1,6){
				s1 = (s1 * base) ;
				s2 = (s2 * base2) ;				
				s1 += a[cnt] ;
				s2 += a[cnt] ;
				if ( cnt == 6 ) cnt = 1 ;
				else cnt++ ;
			}
			s1%=mod , s2 %= mod ;
			if (  p[s1][s2] == 1 ){
				cout << "Twin snowflakes found." ;	
				return 0 ;				
			}
			p[s1][s2] = 1  ;
			s3 = s4 = 0 ;
			f(i,1,6){
				s3 = (s3 * base)   + a[cnt]  ;
				s4 = (s4 * base2)  + a[cnt] ;
				if ( cnt == 1 ) cnt = 6 ;
				else cnt-- ;
			}
			s3%= mod , s4 %= mod ;		
			if (  p[s3][s4] == 1 ){
				cout << "Twin snowflakes found." ;	
				return 0 ;
			}
			p[s3][s4] = 1 ;	
		}
	}
	cout << "No two snowflakes are alike." ;
	return 0 ;
}
2024/7/16 15:33
加载中...