雪花雪花雪花求调

学术版

cdxxx04 @ 2024-11-28 18:15:57

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=99991;
vector<int*> v[mod+10];
int a[10];
int hah(int *a){
    long long sum=0,mul=1;
    for(int i=0;i<6;i++)
        sum=(sum+a[i])%mod,mul=(mul*a[i])%mod;
    return (sum+mul)%mod;
}
int eq(int *a,int *b){
    for(int i=0;i<6;i++)
        for(int j=0;j<6;j++){
            bool flg=true;
            for(int k=0;k<6;k++)
                if(a[(j+k)%6]!=b[(j+k)%6])  flg=false;
            if(flg) return true;    flg=true;
            for(int k=0;k<6;k++)
                if(a[(j+k)%6]!=b[(j-k+6)%6])  flg=false;
            if(flg) return true;
        }
    return false;
}
int find(int *a){
    int h=hah(a);
    for(int* b:v[h])    if(eq(a,b)) return true;
    v[h].push_back(a);
    return false;
}
signed main() {
    ios::sync_with_stdio(false);    cin.tie(nullptr);
    int n;  cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=0;j<6;j++)    cin>>a[j];
        if(find(a)==true){
            cout<<"Twin snowflakes found.\n";
            return 0;
        }
    }
    cout<<"No two snowflakes are alike.\n";
    return 0;
}

错误数据前几行:

输入:

50000
4347 8197 5258 6337 9646 8062
3868 7166 7148 6397 6498 3647
9223 9676 2345 1506 1780 4048
9954 4668 311 2813 8623 1684
5528 8522 5273 8374 2504 9988
7639 3203 8433 7039 5109 1856
581 900 8248 1653 3521 5980
3592 1257 3937 3500 8359 2806
6322 8766 7179 4809 8133 9396
8964 9535 9652 3073 4686 2078
6939 6616 5360 3828 805 5853
5126 2439 6510 5892 8992 4899
9967 6510 3525 8033 4815 8961
8547 7002 9781 9427 8634 2755
2248 256 7221 6234 5597 9004
2984 86 4867 7607 9778 9452
5629 2191 1463 6760 2392 1804
459 7570 2230 9996 9741 9811
5739 9984 1660 5426 419 3828
1851 7578 4450 4944 329 6081
6785 5621 4218 8311 4857 7641
4605 782 5438 5850 7236 1443
5911 9435 8323 7552 4723 51
6995 8453 9374 2098 9297 9891
3858 194 7419 800 8453 8690
9994 1313 3743 392 1625 329
5847 7092 2481 5423 9535 6864
2874 5576 7755 6017 2622 154
7364 7436 4763 9634 7730 5037
7299 5474 4758 5808 4037 2229
4275 1654 3021 4263 9875 286
919 2726 744 7776 8956 404
9285 3219 659 5785 2535 9675
8099 2972 3623 4626 393 977
6418 7559 5200 4259 8151 4097
8901 9530 3454 8906 1611 4800
331 3 6042 389 213 1634
2944 4211 2550 9431 9132 214
7773 2472 4460 4899 1512 4433
8480 8107 5846 5559 9482 3868
8185 4040 3414 1072 4182 8589
2028 777 9461 1058 4899 4961
9783 4145 2875 7119 8039 8894
7472 7200 8557 6632 5359 3100
1783 3458 4837 3306 3864 2931
9983 2017 627 471 4613 2038
2191 5694 9144 461 3696 996
904 1825 8664 7317 7006 1645
1951 474 1196 632 4250 3529
2293 6371 6800 7329 1915 4438
6611 9796 6847 6342 1338 6050
6892 3359 4953 3610 5413 6571
2520 2950 5708 6015 5843 4420
8055 6115 6995 1872 1994 7646
1430 8985 309 2358 1538 360
7318 4951 1376 239 3850 2497
836 9259 8201 2619 9127 9138
3277 190 8971 4913 3779 1858
6577 6485 4264 708 8488 4928
9143 9844 4738 5400 1958 7041
6650 7410 9689 3815 825 7963
5472 7046 5287 5428 2325 9899
10 964 6151 8404 5976 8017
9504 9188 3915 958 5295 9815
3414 8383 2047 6377 8064 9781
7922 2209 7751 2474 8201 654
4151 7279 3441 5467 1320 9617
622 9855 1156 9438 7002 2297
7115...

输出:

Twin snowflakes found.

标准答案:

No two snowflakes are alike.

by MLE_Automaton @ 2024-11-28 18:18:19

有可能哈希模数没选好导致的,多试一点


by ZMQ_Ink6556 @ 2024-11-28 18:41:10

@cdxxx04 模数试试 1145142023 虽然这数组开不下


by cdxxx04 @ 2024-11-29 10:50:45

@MLE_Automaton @ZMQ_Ink6556 没用


|