분수찾기
#include <stdio.h>
/*분모, 분자의 합이 각 줄의 최댓값이기 때문에 분모나 분자 중 하나만 구해주면 된다.*/
int minus(int maxNum,int* num,int* n){
for(int i=maxNum; i>=1; i--){ //maxNum부터 1까지
*num=i; //n번째 현재 수 저장
*n-=1;
if(*n==0) return 1; //n번째 수를 찾으면 break
}
return -1;
}
int plus(int maxNum,int* num,int *n){
for(int i=1; i<=maxNum; i++){ //1부터 maxNum까지 증가
*num=i;
*n-=1;
if(*n==0) return 1;
}
return -1;
}
int main(){
int n,maxNum=1,num=0; //n번째 수, maxNum은 대각선 하나 기준일때 최대 수, num은 n번째 현재 수
scanf("%d",&n);
while(1){
if(minus(maxNum,&num,&n)==1) break; //내림,올림 하나 당 최댓값 늘어남. 내림한줄 올림한줄
maxNum++;
if(plus(maxNum,&num,&n)==1) break; //n번째 수를 찾으면 break;
maxNum++;
}
printf("%d/%d\n",num,maxNum+1-num); //maxNum+1해주는 이유는 해당 줄에서 분모,분자의 합이 최대값+1이기 때문
return 0;
}
뭔가 간추릴수있을것같은데,,
#include <stdio.h>
int main(){
int n,line=1;
scanf("%d",&n);
for(int i=1; n>line; i++){ //각 줄의 번호만큼 숫자가 있어서 그만큼 빼줌
n = n - line;
line++;
}
if(line%2==0) printf("%d/%d\n",n,line+1-n);
else printf("%d/%d\n",line+1-n,n);
return 0;
}
이래서 코딩은 손으로 쓰면서 하라는거군 ;ㅅ;
짤막해졌다,,
'PROGRAMMING CODE > C' 카테고리의 다른 글
[BAEKJOON] No. 10250 C언어 (0) | 2021.10.19 |
---|---|
[BAEKJOON] No.2869 C언어 (0) | 2021.10.19 |
[BAEKJOON] No.1712 C언어 (0) | 2021.10.19 |
[BAEKJOON] No.2941 C언어 (0) | 2021.10.19 |
[BAEKJOON] No.5622 C언어 (0) | 2021.10.18 |