++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sim1.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
///////////////////////////////////////////////////////////////////////////////
// 1 ~ 1000까지의 합을 구할 때 (1+1000),(2+999)...반복되는
// 합을 500 번 더하는 기본 틀에 적용했다.
//
// x-(x%5) ==> x미만의 5의 배수중 가장 큰 수를 나타낸다.
// x미만이므로 그전에 argv[1]-1해준다.
//
// ((x-(x%5))/5)%2==0 ==> 2로 나눠떨어지면 중간값이
// 존재하지 않으므로 중간값을 더해줄
// 필요가 없다.
//
// ex) 1-1001 의 합의 경우 ...,(500,502), (501) <--중간값
//
// 중간값이 있는 경우 소수점은 버려지고 중간값을 더해주고
// 중간값이 없는 경우 짝수이므로 딱 떨어진다.
//
// ex) 5 995
// 10 990
// 15 985
// .
// .
// 500 (중간값) 짝의 개수 짝의 합 중간값
// 99 * 1000 + 500 = 99500
//
// 15의 배수는 3의 배수와 5의배수에서 두번 더해지므로 빼준다.
//
// minSoong-e
///////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<stdlib.h>
void main(int argc,char *argv[])
{
int sum=0,x=0;
x=atoi(argv[1])-1; // x미만이므로 -1해준다.
////////////////// 5의배수인경우의 합///////////////////////////////////////////////
if(((x-(x%5))/5)%2==0)
{
sum+=(((x-(x%5))/5)/2) * ((x-(x%5))+5);
}
else
{
sum+=(((x-(x%5))/5)/2) * ((x-(x%5))+5) + ((x-(x%5)+5)/2); //중간값을 더해준다.
}
////////////////// 3의배수인경우의 합///////////////////////////////////////////////
if(((x-(x%3))/3)%2==0)
{
sum+=(((x-(x%3))/3)/2) * ((x-(x%3))+3);
}
else
{
sum+=(((x-(x%3))/3)/2) * ((x-(x%3))+3) + ((x-(x%3)+3)/2);
}
////////////////// 15의배수인경우///////////////////////////////////////////////
if(((x-(x%15))/15)%2==0)
{
sum-=(((x-(x%15))/15)/2) * ((x-(x%15))+15);
}
else
{
sum-=(((x-(x%15))/15)/2) * ((x-(x%15))+15) + ((x-(x%15)+15)/2);
}
printf("%d\n",sum); //출력
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
정답 검사용 소스 sim1_1.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include<stdio.h>
#include<stdlib.h>
void main(int argc,char *argv[])
{
int i,sum=0;
for(i=1;i<(atoi(argv[1]));i++)
{
if (i%3==0 || i%5==0)
sum+=i;
}
printf("%d\n",sum);
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
output
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++