2014-05-22 5 views
-3

두 개의 숫자를 곱한 다음 원래 값과 반전 된 값을 비교하여 같은 숫자인지 비교하려고합니다. 값을 반대로 한 후에는 어떻게 비교할 수 있도록 int 또는 string으로 다시 설정해야합니까? 이 아마도처럼숫자를 반대로 원래 값과 비교하는 방법

int i = 0; 

var x = Enumerable.Range(100,999); 
var y = Enumerable.Range(100,999); 

foreach (var xValue in x) 
{ 
    foreach (var yValue in y) 
    { 
     i = (xValue * yValue); 

     var t = i.ToString(); 
     var tempt = t.Reverse(); 

     var temp = new string(tempt); 

     if (i.ToString() == temp) 
     { 

     } 
    } 
} 
+0

'와 답을 뒤집을 것'; 그런 다음 답을 뒤집을 수 있습니까? –

+1

이것은 매우 익숙해 보입니다 ... http://projecteuler.net/problem=4 –

+0

회문수는 내가 찾고있는 가치입니다. – NNassar

답변

0

? (하나는 정말 문제 오일러 프로젝트에 대한 답을 포기하지 말아야하지만, 이것은 단지 문제 네, 그래서 도대체입니다)

public int SolveProblem004() 
    { 
     int result = 0; 
     for (int a = 999; a >= 100; --a) { 
      for (int b = 999; b >= a; --b) { 
       int product = a * b; 
       if (product <= result) break; 
       if (IsPalindromic(product)) { result = product; break; } 
      } 
     } 
     return result; 
    } 

    public static bool IsPalindromic(int i) 
    { 
     return i == Reverse(i); 
    } 

    public static int Reverse(int number) 
    { 
     if (number < 0) return -Reverse(-number); 
     if (number < 10) return number; 
     int reverse = 0; 
     while (number > 0) { 
      reverse = reverse * 10 + number % 10; 
      number /= 10; 
     } 
     return reverse; 
    } 
+0

어쨌든 모든 답을 찾을 수 있습니다. 나는 그 일을하는 것이 무엇인지 알지 못합니다. =/ – msmolcic

+1

@ msmolcic92 전적으로 동의합니다.하지만 대답을하는 것은 아무에게도 가르치지 않습니다. 재미있는 부분은 방법을 파악하는 것입니다. –

+0

정확히 내 포인트;) – msmolcic

0
int n; //given number 
int left = n; 
int rev = 0; 
while(left>0) 
{ 
r = left % 10; //take the last number 
rev = rev * 10 + r; //add it to a new number to flip it 
left = left/10; //left = Math.floor(left/10); 
} 
+0

이것은 OP가 해결하려고하는 문제를 해결할 수 있지만 이것은 질문에 대한 대답이 아닙니다. 약간의 텍스트 설명을 덧붙이는 것도 좋을 것입니다 –

0

당신은 그것을 이런 식으로 수행 할 수 있습니다

int i = 0; 

var x = Enumerable.Range(100, 999); 
var y = Enumerable.Range(100, 999); 

foreach (var xValue in x) 
{ 
    foreach (var yValue in y) 
    { 
     i = (xValue * yValue); 

     char[] number = i.ToString().ToCharArray(); 
     char[] reversedNumber = i.ToString().ToCharArray(); 
     Array.Reverse(reversedNumber); 

     if (new string(number).Equals(new string(reversedNumber))) 
     { 

     } 
    } 
} 

그것은 내부에 입력됩니다 if 루프가 number가 반대 숫자와 같으면 그냥 지나치다.

관련 문제