2011-10-20 4 views
4

수학적 알고리즘이 필요합니다 (또는하지 않음) 간단하거나 필요하지 않습니다.작은 화면에서 더 큰 컨테이너를 보는 알고리즘

다음과 같습니다. 두 개의 숫자 a와 b가 있으며 b에 더 가까운 작은 숫자를 찾으려고합니다. c. 의 "%의 C == 0"

경우의 "%의 B == 0"

왜 그 후 C ==이고 b를되도록? 내 화면의 크기가 x 픽셀입니다. 그리고 컨테이너에는 y> x와 같은 픽셀 y가 있습니다.

공간을 낭비하지 않고 화면에서 컨테이너를 볼 수 있도록 얼마만큼 스크롤해야하는지 계산하고 싶습니다. 필자는 반드시 구경하기를 원합니다.

내 화면과 내 전체 컨테이너를 보는 빈도에 따라 롤백해야 할 정도를 알아야합니다.

답변

2

도움이 될까요? (자바 코드)

int a = 2000; 
int b = 300; 
int c = 0; 

for (int i = b; i > 0; i--) { 
    if ((a % i) == 0) { 
     c = i; 
     break; 
    } 
} 

결과는 c로 표시됩니다.

문제는 요청
0

, ab을 부여, 일부 k

에 대한

  • c <= b
  • c*k = a가 첫 번째 제약은 낮은 k에 바인딩두고 가장 큰 c 같은 것을 발견하고, c 최대화는 두 번째 단점을 고려하여 k을 최소화하는 것과 동일합니다. traint. k위한

    하한은

    a = c*k <= b*k 
    

    k >= a/b 주어진다. 따라서 예를 들어, a의 약수 인 가장 작은 k을 찾습니다.

    if (b > a) return a; 
    for (int k=a/b; k<=a; ++k) 
        if (a % k == 0) { 
         return a/k; 
        } 
    } 
    
관련 문제