Processing math: 100%

#UVa:11388-GCD LCM

灆洢 2016-04-28 10:17:41

基本上符合的答案就會是a = G, b = L,原因如下:

先證明什麼時候會有解,由於G | a, ba, b | L,故至少G | a, b | L,亦指在有解的情況下至少G要能整除L。

那在有解的情況下a如果要最小該會是多少呢?由於G | a,故a為G的某個倍數,而其中最小的就為G。那在a = G的情況下一定會有解嗎?由於G \times L = a \times b,而a = G,所以G \times L = G \times b,整理一下可得b = L,所以在有解的情況下最符合的答案即是(a, b) = (G, L)

C++(0.000)

/*******************************************************/
/* UVa 11388 GCD LCM                                   */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2016/04/28                                 */
/*******************************************************/
#include <iostream>
#include <cstdio>
using namespace std;

int main(){
  int caseCount;
  while( scanf("%d", &caseCount) != EOF ){
    for( int caseNumber = 0 ; caseNumber < caseCount ; ++caseNumber ){
      int G, L;
      scanf("%d%d", &G, &L);

      if( L % G == 0 ){
        printf("%d %d\n", G, L);
      }
      else{
        printf("-1\n");
      }
    }
  }
  return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料