#include <iostream>
int main()
{
int i;
int mul=1;
for(i=1; i<=100; i++)
{
if(i%2==0)
mul*=i;
else
mul*=-i;
}
printf("%d", mul);
}
1에서 100까지 i가 짝수면 mul=1에다 양수로 곱하고
홀수면 음수로 곱하라는 코드인데 0이 나온다
어디가 틀린건지 보이는 사람 있냐?
#include <iostream>
int main()
{
int i;
int mul=1;
for(i=1; i<=100; i++)
{
if(i%2==0)
mul*=i;
else
mul*=-i;
}
printf("%d", mul);
}
1에서 100까지 i가 짝수면 mul=1에다 양수로 곱하고
홀수면 음수로 곱하라는 코드인데 0이 나온다
어디가 틀린건지 보이는 사람 있냐?
코드에 틀린 건 없는데. 지금 하려는 게 (-1) * 2 * (-3) * 4 * ... 임? 그러면 결과값이 100!이 될 거고 이 값이 너무 커서 0으로 오버플로가 난 거임.
100! = 100 팩토리얼 = 1 × 2 × 3 × ... × 98 × 99 × 100
ㄴ 그럼 그거 어떻게 해결함?
직접 곱하기를 구현해야 한다. 문자열로.
long lon 이 19자리수인가까지 표현하는데 그것도 100! 표현못할거같은데
그러면 string 이나 vector 이용해서 동적으로 자리수 구해서 올려야함 알고리즘따로짜야할듯
한번짜보면 도움됨
double로 바꾸고 printf에 %.0lf 쓰면 안 되나? 그리고 main()안에 void 안 써도 돼?
double로 바꾸면 대략적인 값의 크기만 알 수 있을 뿐 정확한 값은 알 수 없음. 지수 범위는 표현할 수 있는 수가 폭넓지만 가수부의 정밀도에 한계가 있으니깐.
long long 으로도 표현못하는 정수형을 double로 표현이 안될거같은데 그리고 main 의 return 은 컴파일러마다 다름 AVR용 같은거는 꼭 void로 리넡지정자를 정해줘야하지만 VS같은경우에는 꼭 void 가아니여도됨
int main()이라 적고 return 문 빠뜨린 게 사실 이상한 거임. MS VC++가 그걸 묵인하는 거고. 본격 초보자 땔깜 양성 컴파일러 ㅋㅋ
아 ㅇㅋ 답변 고마워요
http://autogram.tk/이
중고차 어플리케이션 어떤가요?