<링크>

https://www.acmicpc.net/problem/2725


<풀이>

한번 나왔던 기울기에 속하는 좌표는 다시는 보일수없다
x/y 가 기울기이다. 

예를 들면 x가 2, y가 8일때 기울기는 2/8이 되는데 이는 이미 1/4에서 나왔기 때문에 보일수없다. 
x가 3, y가 5일때는 같은 기울기가 나왔을 수 없기 때문에 보인다. 


정리하면 
1/y 
2/y 
... 
y/y 
중에서 좌표끼리 분수를 만들고 약분되면 그 좌표는 보일 수가 없다.  
이전에 이미 같은 기울기가 나왔다는 뜻이기 때문이다. 
따라서 분모와 분자의 최대공약수가 1일때만 더해나가면된다.


<소스코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
int ans[1001= { 0,2 };
int gcd(intint);
int main()
{
    for (int i = 2; i <= 1000++i)
    {
        int n = 0;
        for (int j = 1; j <= i; ++j)
        {
            if (gcd(i, j) == 1)
                ++n;
        }
        ans[i] = ans[i - 1+ n;
    }
    int T;
    scanf("%d"&T);
    while (T--)
    {
        int N;
        scanf("%d"&N);
        printf("%d\n", ans[N] * 2 - 1);
    }
}
int gcd(int a, int b)
{
    while (a%b != 0)
    {
        int tmp = b;
        b = a % b;
        a = tmp;
    }
    return b;
}
cs


'알고리즘 풀이 > 기타' 카테고리의 다른 글

백준 10973 이전 순열  (0) 2018.07.24
백준 10972 다음 순열  (1) 2018.07.24
백준 9011 순서 :: 들짐승  (1) 2018.07.22
백준 8982 수족관1 :: 들짐승  (0) 2018.07.22
백준 5624 좋은 수 :: 들짐승  (0) 2018.07.22

+ Recent posts