20,360
社区成员
发帖
与我相关
我的任务
分享
define('a', 0);
define('b', 1);
define('c', 2);
define('d', 3);
$A = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$B = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$C = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
$D = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
foreach(math::Descartes($A, $B, $C, $D) as $v) {
$e = 0;
if(in_array($v[a], array(0, 1, 2))) $e++;
if(in_array($v[b], array(2, 4, 6))) $e++;
if(in_array($v[c], array(3, 4, 7))) $e++;
if(in_array($v[d], array(2, 5, 7))) $e++;
if(in_array(($v[a]+$v[b])%10, array(0, 1))) $e++;
if(in_array(($v[b]+$v[c])%10, array(1, 2, 3))) $e++;
if(in_array(($v[c]+$v[d])%10, array(0, 4))) $e++;
if($e <= 2) echo join('', $v), PHP_EOL;
}
也是瞬间完成 static function Descartes($d) {
if(func_num_args() > 1) $d = func_get_args();
$r = array_pop($d);
while($d) {
$t = array();
$s = array_pop($d);
if(! is_array($s)) $s = array($s);
foreach($s as $x) {
foreach($r as $y) $t[] = array_merge(array($x), is_array($y) ? $y : array($y));
}
$r = $t;
}
return $r;
}
spl_autoload_register();
/*
求一算法:有ABCD组成的一串数字,其中得知以下7个条件:A排除012,B排除246,C排除347,D排除257,A+B排除01,B+C排除123,C+D排除04,并且7个条件允许可以错2个条件,即容错2,求ABCD组成的数字
*/
define('a', 0);
define('b', 1);
define('c', 2);
define('d', 3);
$A = array_diff(str_split('0123456789'), str_split('012'));
$B = array_diff(str_split('0123456789'), str_split('246'));
$C = array_diff(str_split('0123456789'), str_split('347'));
$D = array_diff(str_split('0123456789'), str_split('257'));
foreach(math::Descartes($A, $B, $C, $D) as $v) {
$e = 0;
if(in_array(($v[a]+$v[b])%10, array(0, 1))) $e++;
if(in_array(($v[b]+$v[c])%10, array(1, 2, 3))) $e++;
if(in_array(($v[c]+$v[d])%10, array(0, 4))) $e++;
if($e == 0) echo join('', $v), PHP_EOL;
}
3001
3003
3006
3008
3009
3050
3051
3053
3054
3056
3058
3060
3061
3063
3066
3069
3080
3081
3083
3084
3088
3089
3090
3093
3094
3096
3098
3099
3150
3151
3153
3154
3156
3158
3160
3161
3163
3166
3169
3180
3181
3183
3184
3188
3189
3190
3193
3194
3196
3198
3199
3310
3311
3314
3316
3318
3320
3321
3323
3324
3326
3329
3350
3351
3353
3354
3356
3358
3360
3361
3363
3366
3369
3501
3503
3506
3508
3509
3510
3511
3514
3516
3518
3520
3521
3523
3524
3526
3529
3550
3551
3553
3554
3556
3558
3590
3593
3594
3596
3598
3599
3901
3903
3906
3908
3909
3910
3911
3914
3916
3918
3950
3951
3953
3954
3956
3958
3960
3961
3963
3966
3969
3980
3981
3983
3984
3988
3989
3990
3993
3994
3996
3998
3999
4001
4003
4006
4008
4009
4050
4051
4053
4054
4056
4058
4060
4061
4063
4066
4069
4080
4081
4083
4084
4088
4089
4090
4093
4094
4096
4098
4099
4150
4151
4153
4154
4156
4158
4160
4161
4163
4166
4169
4180
4181
4183
4184
4188
4189
4190
4193
4194
4196
4198
4199
4310
4311
4314
4316
4318
4320
4321
4323
4324
4326
4329
4350
4351
4353
4354
4356
4358
4360
4361
4363
4366
4369
4501
4503
4506
4508
4509
4510
4511
4514
4516
4518
4520
4521
4523
4524
4526
4529
4550
4551
4553
4554
4556
4558
4590
4593
4594
4596
4598
4599
4801
4803
4806
4808
4809
4810
4811
4814
4816
4818
4820
4821
4823
4824
4826
4829
4860
4861
4863
4866
4869
4880
4881
4883
4884
4888
4889
4890
4893
4894
4896
4898
4899
4901
4903
4906
4908
4909
4910
4911
4914
4916
4918
4950
4951
4953
4954
4956
4958
4960
4961
4963
4966
4969
4980
4981
4983
4984
4988
4989
4990
4993
4994
4996
4998
4999
5001
5003
5006
5008
5009
5050
5051
5053
5054
5056
5058
5060
5061
5063
5066
5069
5080
5081
5083
5084
5088
5089
5090
5093
5094
5096
5098
5099
5150
5151
5153
5154
5156
5158
5160
5161
5163
5166
5169
5180
5181
5183
5184
5188
5189
5190
5193
5194
5196
5198
5199
5310
5311
5314
5316
5318
5320
5321
5323
5324
5326
5329
5350
5351
5353
5354
5356
5358
5360
5361
5363
5366
5369
5701
5703
5706
5708
5709
5710
5711
5714
5716
5718
5720
5721
5723
5724
5726
5729
5780
5781
5783
5784
5788
5789
5790
5793
5794
5796
5798
5799
5801
5803
5806
5808
5809
5810
5811
5814
5816
5818
5820
5821
5823
5824
5826
5829
5860
5861
5863
5866
5869
5880
5881
5883
5884
5888
5889
5890
5893
5894
5896
5898
5899
5901
5903
5906
5908
5909
5910
5911
5914
5916
5918
5950
5951
5953
5954
5956
5958
5960
5961
5963
5966
5969
5980
5981
5983
5984
5988
5989
5990
5993
5994
5996
5998
5999
6001
6003
6006
6008
6009
6050
6051
6053
6054
6056
6058
6060
6061
6063
6066
6069
6080
6081
6083
6084
6088
6089
6090
6093
6094
6096
6098
6099
6150
6151
6153
6154
6156
6158
6160
6161
6163
6166
6169
6180
6181
6183
6184
6188
6189
6190
6193
6194
6196
6198
6199
6310
6311
6314
6316
6318
6320
6321
6323
6324
6326
6329
6350
6351
6353
6354
6356
6358
6360
6361
6363
6366
6369
6701
6703
6706
6708
6709
6710
6711
6714
6716
6718
6720
6721
6723
6724
6726
6729
6780
6781
6783
6784
6788
6789
6790
6793
6794
6796
6798
6799
6801
6803
6806
6808
6809
6810
6811
6814
6816
6818
6820
6821
6823
6824
6826
6829
6860
6861
6863
6866
6869
6880
6881
6883
6884
6888
6889
6890
6893
6894
6896
6898
6899
6901
6903
6906
6908
6909
6910
6911
6914
6916
6918
6950
6951
6953
6954
6956
6958
6960
6961
6963
6966
6969
6980
6981
6983
6984
6988
6989
6990
6993
6994
6996
6998
6999
7001
7003
7006
7008
7009
7050
7051
7053
7054
7056
7058
7060
7061
7063
7066
7069
7080
7081
7083
7084
7088
7089
7090
7093
7094
7096
7098
7099
7150
7151
7153
7154
7156
7158
7160
7161
7163
7166
7169
7180
7181
7183
7184
7188
7189
7190
7193
7194
7196
7198
7199
7501
7503
7506
7508
7509
7510
7511
7514
7516
7518
7520
7521
7523
7524
7526
7529
7550
7551
7553
7554
7556
7558
7590
7593
7594
7596
7598
7599
7701
7703
7706
7708
7709
7710
7711
7714
7716
7718
7720
7721
7723
7724
7726
7729
7780
7781
7783
7784
7788
7789
7790
7793
7794
7796
7798
7799
7801
7803
7806
7808
7809
7810
7811
7814
7816
7818
7820
7821
7823
7824
7826
7829
7860
7861
7863
7866
7869
7880
7881
7883
7884
7888
7889
7890
7893
7894
7896
7898
7899
7901
7903
7906
7908
7909
7910
7911
7914
7916
7918
7950
7951
7953
7954
7956
7958
7960
7961
7963
7966
7969
7980
7981
7983
7984
7988
7989
7990
7993
7994
7996
7998
7999
8001
8003
8006
8008
8009
8050
8051
8053
8054
8056
8058
8060
8061
8063
8066
8069
8080
8081
8083
8084
8088
8089
8090
8093
8094
8096
8098
8099
8150
8151
8153
8154
8156
8158
8160
8161
8163
8166
8169
8180
8181
8183
8184
8188
8189
8190
8193
8194
8196
8198
8199
8501
8503
8506
8508
8509
8510
8511
8514
8516
8518
8520
8521
8523
8524
8526
8529
8550
8551
8553
8554
8556
8558
8590
8593
8594
8596
8598
8599
8701
8703
8706
8708
8709
8710
8711
8714
8716
8718
8720
8721
8723
8724
8726
8729
8780
8781
8783
8784
8788
8789
8790
8793
8794
8796
8798
8799
8801
8803
8806
8808
8809
8810
8811
8814
8816
8818
8820
8821
8823
8824
8826
8829
8860
8861
8863
8866
8869
8880
8881
8883
8884
8888
8889
8890
8893
8894
8896
8898
8899
8901
8903
8906
8908
8909
8910
8911
8914
8916
8918
8950
8951
8953
8954
8956
8958
8960
8961
8963
8966
8969
8980
8981
8983
8984
8988
8989
8990
8993
8994
8996
8998
8999
9001
9003
9006
9008
9009
9050
9051
9053
9054
9056
9058
9060
9061
9063
9066
9069
9080
9081
9083
9084
9088
9089
9090
9093
9094
9096
9098
9099
9310
9311
9314
9316
9318
9320
9321
9323
9324
9326
9329
9350
9351
9353
9354
9356
9358
9360
9361
9363
9366
9369
9501
9503
9506
9508
9509
9510
9511
9514
9516
9518
9520
9521
9523
9524
9526
9529
9550
9551
9553
9554
9556
9558
9590
9593
9594
9596
9598
9599
9701
9703
9706
9708
9709
9710
9711
9714
9716
9718
9720
9721
9723
9724
9726
9729
9780
9781
9783
9784
9788
9789
9790
9793
9794
9796
9798
9799
9801
9803
9806
9808
9809
9810
9811
9814
9816
9818
9820
9821
9823
9824
9826
9829
9860
9861
9863
9866
9869
9880
9881
9883
9884
9888
9889
9890
9893
9894
9896
9898
9899
9901
9903
9906
9908
9909
9910
9911
9914
9916
9918
9950
9951
9953
9954
9956
9958
9960
9961
9963
9966
9969
9980
9981
9983
9984
9988
9989
9990
9993
9994
9996
9998
9999