U E D R , A S I H C RSS

김희성/Short Coding/최대공약수

Difference between r1.2 and the current

@@ -1,10 +1,12 @@
== 최대공약수 ==
{{{
main(a,b){scanf("%d%d",&a,&b);while(a%b)a^=b^=a^=b;printf("%d",b);}
main(a,b){scanf("%d%d",&a,&b);while(a%=b)a^=b^=a^=b;printf("%d",b);}
}}}
* 언어 : C
* 컴파일 환경 : G++
* 컴파일 환경 : gcc
* 풀이 :
*gcc 컴파일러는 사용된 function을 확인하여 필요한 header file을 자동으로 include 해줍니다. 또한 gcc 컴파일러는 타입이 선언되지 않은 변수는 int형으로 처리합니다. 
*main는 콘솔환경에서의 입력을 위한 인자 2개를 가집니다. 본래 형식은 main(int,char**)이지만 gcc의 경우 변수형을 선언하지 않으면 두번째 인자도 int형으로 처리됩니다.
*a^=b^=a^=b;(a^=b;b^=a;a^=b;)는 추가 변수 없이 두 수의 값을 바꾸는 방법이지만 두 수가 같을 시 두 수의 값이 0이 되는 치명적인 버그가 있습니다. 본 코드에서는 while문에서 a%b라는 조건을 주어 이 버그를 차단하고 있습니다.
'''컴파일러''' - gcc 컴파일러는 사용된 function을 확인하여 필요한 header file을 자동으로 include 해줍니다. 또한 gcc 컴파일러는 타입이 선언되지 않은 변수는 int형으로 처리합니다. 이로인해서 main의 본래 형식은 int main(int,char**)이지만 변수형을 선언하지 않으면 두번째 인자도 int형으로 처리됩니다. 
'''알고리즘''' - 유클리드호제법을 사용합니다.
 
'''Coding Skill''' - a^=b^=a^=b;(a^=b;b^=a;a^=b;)는 추가 변수 없이 두 수의 값을 바꾸는 방법입니다. 하지만 두 수가 같을 시 두 수의 값이 0이 되는 치명적인 버그가 있습니다. 본 코드에서는 while문에서 a%=b라는 조건을 주어 이 버그를 차단하고 있습니다.



최대공약수

main(a,b){scanf("%d%d",&a,&b);while(a%=b)a^=b^=a^=b;printf("%d",b);}
  • 언어 : C
  • 컴파일 환경 : gcc
  • 풀이 :
    컴파일러 - gcc 컴파일러는 사용된 function을 확인하여 필요한 header file을 자동으로 include 해줍니다. 또한 gcc 컴파일러는 타입이 선언되지 않은 변수는 int형으로 처리합니다. 이로인해서 main의 본래 형식은 int main(int,char**)이지만 변수형을 선언하지 않으면 두번째 인자도 int형으로 처리됩니다.

    알고리즘 - 유클리드호제법을 사용합니다.

    Coding Skill - a^=b^=a^=b;(a^=b;b^=a;a^=b;)는 추가 변수 없이 두 수의 값을 바꾸는 방법입니다. 하지만 두 수가 같을 시 두 수의 값이 0이 되는 치명적인 버그가 있습니다. 본 코드에서는 while문에서 a%=b라는 조건을 주어 이 버그를 차단하고 있습니다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:52
Processing time 0.0230 sec