(defun bulundu? (i &optional (sonuç '(1 2 3)) (görüldü nil) (n (length sonuç))) (if (< i (1- n)) (do ( (j 1 (1+ j) ) ) ( (> j 9) sonuç) (unless (some (lambda (x) (= x j)) görüldü) (setf (nth i sonuç) j) (push j görüldü) (if (bulundu? (1+ i) sonuç görüldü n) sonuç) (setf görüldü (remove j görüldü)))) (do ( (j 1 (1+ j) ) ) ( (> j 9) sonuç) (unless (some (lambda (x) (= x j)) görüldü) (setf (nth i sonuç) j) (let ((sol (* 111 (reduce #'+ sonuç))) (sağ (reduce #'+ (mapcar (lambda (x y) (* x y)) '(1000 100 10 1) (list (third sonuç) (first sonuç) (first sonuç) (second sonuç)))))) (if (= sol sağ) (return-from bulundu? sonuç) nil))))))
using namespace std;
vector<bool> used(10, false);
int ans[3];
void solve(int turn){
if(turn == 3){
if(111 * ans[2] + 111 * ans[1] + 111 * ans[0] == 1000 * ans[2] + 110 * ans[0] + ans[1])
cout << "a = " << ans[0] << " b = " << ans[1] << " c = " << ans[2] << '\n';
return;
}else{
for(int i = 1; i <= 9; i++){
if(!used){
used = true;
ans[turn] = i;
solve(turn + 1);
used = false;
}
}
}
}
int main(){
solve(0);
return 0;
}
Bu mesaja 1 cevap geldi. Cevapları Gizle