그냥...무제(?)
for문 사용할 때와 수학식 사용할 때의 연산시간...
Gungume
2006. 10. 23. 20:22
int int_test(void) { double val1, val2; double remainder; double result=0; double small; double current; clock_t begin; std::cout << "10억과 1사이의 정수들의 합을 구합니다." << std::endl<<std::endl; //std::cin>>val1>>val2; //std::cout<<std::endl; val1=1000000000; val2=-100000000; begin = clock(); // 측정시작 result=(val1+val2)*(abs(val1-val2)-1)/2; // 1. 공식을 사용한 코드 current = (double)(clock() - begin) / CLOCKS_PER_SEC; // 측정 끝 std::cout<<"1.공식사용 : "<<result<<std::endl; std::cout<<"1.연산시간 : "<<current<<std::endl; result=0; remainder=abs(val1-val2); if(val1-val2>0) small=val2; else small=val1; begin = clock(); // 측정시작 for(double i=1;i<remainder;i++) // 2. for문을 사용한 코드 { // 측정끝 ++small; result=result+small; } current = (double)(clock() - begin) / CLOCKS_PER_SEC ; std::cout << "2. for문사용 : " << result<<std::endl; std::cout << "2. 연산시간 : " << current<<std::endl; return 0; }
소스출처 : 데브피아 자유게시판
- 내 컴에서 결과 -
10억과 1사이의 정수들의 합을 구합니다.----------------------------------------------------------------------------1.공식사용 : 4.95e+017
1.연산시간 : 0
2. for문사용 : 4.95e+017
2. 연산시간 : 5.937
위의 간단한 코드가 많은 생각을 하게 만들었다...
평소의 나라면 누가 저런 문제를 냈다면 주저 없이 반복문 돌리고 끝냈을것 같다...
반복문이 편하기도 하지만 저런 공식 잘 모른다...ㅜ.ㅜ
결과가 저렇게 차이나는게 당연하지만 새삼 놀랬다...
역시 수학을 해야하나...진짜 하기 싫은 과목인데...피할수 없는 길인가보다.......