Algorithm/etc
연속된 자연수의 합
DingCoDing
2022. 1. 7. 15:06
반응형
처음 짠 코드
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
//freopen("input.txt.txt","rt",stdin);
int n,k,cnt=0;
scanf("%d",&n);
for(int i=n/2 +1; i>=1; i--){
int sum = i;
for(int j=i-1 ; j>=1; j--){
sum+=j;
if(sum==n){
for(k=j; k<i;k++){
printf("%d + ",k);
}
printf("%d = %d\n",k,sum);
cnt++;
break;
}
else if(sum>n){
break;
}
}
}
printf("%d",cnt);
}
------
수정
1, 2 -> (15-3)%2==0이므로 가능
1,2,3 -> (15-6)%3==0이므로 가능
1,2,3,4 -> != 0 이므로 불가
1,2,3,4,5 ==0이므로 가능
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
//freopen("input.txt.txt","rt",stdin);
int n,k,cnt=0, sum=3,i=2;
scanf("%d",&n);
// 1 , 2
// 1, 2, 3
//
while(sum<=n){
if((n-sum)%i==0){
int add = (n-sum)/i;
for(k=1 + add ; k< i+add ;k++){
printf("%d + ",k);
}
printf("%d = %d\n",k,n);
cnt++;
}
i++;
sum+=i;
}
printf("%d",cnt);
}
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
//freopen("input.txt.txt","rt",stdin);
int a, b=1, cnt=0, tmp, i;
scanf("%d",&a);
tmp=a;
a--;
while(a>0){
b++;
a=a-b;
if(a%b==0){
for(i=1; i<b; i++){
printf("%d + ", (a/b)+i);
}
printf("%d = %d\n", (a/b)+i, tmp);
cnt++;
}
}
printf("%d",cnt);
}반응형