#include "stdafx.h"
#include <iostream>
#include<stdio.h>
#include <time.h>
using namespace std;
void make() {
int c,d,result=0,ch=0;
int control[20];
for(int i=1;i<2000;i++) {
for(int k=1;k<2000;k++){
if(i*k>9876) {
break;
}
int numbers[9]={1,2,3,4,5,6,7,8,9};
c=i;
bool efe=1,p=1;
do {
d=c%10;
if(d==0) {
efe=0;
break;
}
int counter=0;
for(int m=0;m<9;m++) { //check for same number
if(numbers[m] == d) {
counter++;
numbers[m] = 0;
}
}
if(counter ==0 ) {
efe=0;
break;
}
c/=10;
}while(c>0);
if(efe==0) {
continue;
}
c=k;
do {
d=c%10;
if(d==0) {
efe=0;
break;
}
int counter=0;
for(int m=0;m<9;m++) {
if(numbers[m] == d) {
counter++;
numbers[m] = 0;
}
}
if(counter ==0 ) {
efe=0;
break;
}
c/=10;
}while(c>0);
if(efe==0) {
continue;
}
c=i*k;
do {
d=c%10;
if(d==0) {
efe=0;
break;
}
int counter=0;
for(int m=0;m<9;m++) {
if(numbers[m] == d) {
counter++;
numbers[m] = 0;
}
}
if(counter ==0 ) {
efe=0;
break;
}
c/=10;
}while(c>0);
if(efe==0) {
continue;
}
int res=0;
for(int n=0;n<9;n++) {
res+=numbers[n];
}
if(res==0) {
for(int f=0;f<ch;f++) {
if(control[f] == i*k) {
p=0;
break;
}
}
if(p==1) {
result+=i*k;
control[ch] = i*k;
ch++;
}
}
}
}
cout << "Project Euler - Problem 32(Pandigital products)\n";
cout << "Result :" << result << " efekanpulatli.blogspot.com" << endl;
}
int main()
{
clock_t tStart = clock();
make();
printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
system("pause");
return 0;
}

Hiç yorum yok:
Yorum Gönder