C언어/백준

2869번, 5086번, 2501번, 9506번, 1978번

twoweeks-within 2024. 11. 19. 17:53

2869

A : up, B : down , V : 목표

1. 정상에 올라간 즉, 마지막날은 미끄러지지 않음

  : V - B  // 마지막 미끄러지는 거리를 빼면 > 총거리 

2. 걸린 일수 : 총거리 / 하루에 가는거리

   : (V-B) / (A-B)

3. if( (V - B) % (A - B) != 0 ) { days ++; }

 나머지가 0 이아니면 하루를 더 더해줘야함

 

5086

A, B (첫째, 둘째) 

1.   B % A == 0  : factor

2.   A % B == 0  :multiple

 

2501

for문, n k 로 받음 

1. 약수 :  A % i  == 0  > count++ 

2. count == k > printf( "%d" ,i ), return 0;

 

9506번

약수 : n/2 보다 클 수 없음

 ex ) 28 => 1,2,4,7,14,28 

          자기자신으 제외하면 최소 2부터 이기때문

1. n % i ==0 > 약수이면

    sum += i ,

   divisors[count++] = i 

     약수들을 divisors 배열에 넣음 + count 개수도 더함

2. 완전수 ->  sum == n  > printf("%d", devisors[i]);

3. 덧셈은 총 개수보다 1개 적음

     i < count - 1  : printf ("+");

 

1978번

소수 분류

a. 1보다 작고

b. 2는 소수

c. 2이외의 짝수는 소수x 

d. 홀수만 검사 ( for( int i = 3; i <= sqrt(num); i += 2 ) // 3에서 2씩 더하면 홀수

    ex) sqrt(36) = 6 // #include <math.h>

     1, 2, 3, 4, 6, 9, 12, 18, 36  > 6까지만 보면 나머지는 소수가 아님( 곱해지는 무언가 있음)

d-a) if (num % i == 0) 그 수 중에서 i 로 나눠지면 소수가 아니므로 return 0

 > else count ++

 

'C언어 > 백준' 카테고리의 다른 글

5073번, 14215번  (0) 2024.11.21
2581번, 11653번, 1085번, 3009번  (0) 2024.11.20
1193번  (0) 2024.11.16
2738번, 2566번, 2563번, 2745번  (0) 2024.11.14
25206번  (1) 2024.11.13