📄 cryptarithm.c
字号:
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <math.h>int main(void){ for (int x = 10000; x <= 99999; ++x){ int roads=1; int cross = x; int danger=1; int c = cross / 10000; int bits1 = 1 << c; int r = (cross / 1000) % 10; if (r == 0) continue; if (( bits1 >> r) % 2) continue; bits1 += 1 << r; int o= (cross%1000)/100; if (( bits1 >> o) % 2) continue; bits1 += 1 << o; int s= cross%10; if (( bits1 >> s) % 2) continue; bits1 += 1 << s; int s2=cross/10%10; if(s2!=s) continue; for (int y = 1; y <= 99; ++y){ int bits2=bits1; int ad = y; int a= ad/10; if (( bits2 >> a) % 2) continue; bits2 += 1 << a; int d= ad%10; if(d==0) continue; if (( bits2 >> d) % 2) continue; bits2 += 1 << d; roads=s+(ad*10)+o*1000+r*10000; for(int z=1;z<=999;++z){ int bits3=bits2; int nge=z; int n= nge/100; if (( bits3 >> n) % 2) continue; bits3 += 1 << n; int g= (nge/10)%10; if (( bits3 >> g) % 2) continue; bits3 += 1 << g; int e= nge%10; if (( bits3 >> e) % 2) continue; bits3 += 1 << e; danger=r+nge*10+a*10000+d*100000; int result; result =roads+cross; if (danger==result) printf("cross=%d, roads=%d and danger=%d is a solution\n",cross,roads,danger); } } } return EXIT_SUCCESS;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -