24 Mart 2013 Pazar

Thirty sixth solution of Project Euler







#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
bool ispalindromic(int i);
bool isthispalindromic(int i);

bool ispalindromic(int i) {
 int dizi[6],c=0;
 do {
  dizi[c] = i % 10;
  i/=10;
  c++;
 }while(i>0);
 c--;
 for(int k=0;k<=c;k++,c--) {
  if(dizi[k]!=dizi[c]) {
       return 0;
  }
 }
 return 1;
}


bool isthisispalindromic(int dizi[],int c) {
 c--;
 for(int k=0;k<=c;k++,c--) {
  if(dizi[k]!=dizi[c]) {
   return 0;
  }
 }
 return 1;
}



void tab() {
 int dizi[10000],c,result=0;
 for(int i=1;i<1000000;i++) {
  if(ispalindromic(i)){
   c=i;
   int k=0;
   do {
  if(c%2==0) { dizi[k] = 0; }else { dizi[k] = 1;}
  c/=2;
  k++;
 }while(c>0);
   if(isthisispalindromic(dizi,k)) {
   result+=i;
   }
  }

}
  cout << "Project Euler - Problem 36\n";
              cout << "Result :" << result << " efekanpulatli.blogspot.com" << endl;
}
int main()
{
 clock_t tStart = clock();

tab();
printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
system("pause");
return 0;
}

Hiç yorum yok:

Yorum Gönder