糖逗 发表于 2020-5-14 15:47:34

C++刷面试题(最大公约数)【数学|越界处理】【网易】【2020】

本帖最后由 糖逗 于 2020-5-23 16:02 编辑

题目描述:如图1
题目来自:牛客网


#include <iostream>
#include <string>
using namespace std;

long long gcd(long long a, long long b) {//辗转相除
   if (b == 0) return a;
   return gcd(b, a%b);
}

int main() {
   string s;
   getline(cin,s);
   long long a = 0, b;
   cin >> b;
   for (int i = 0; s != '\0'; i++) {
      a = (a * 10 + s - '0') % b;
   }//先用最大值除以最小值得到一个较小的数防止数据溢出
   cout << gcd(a, b);
   return 0;
}

页: [1]
查看完整版本: C++刷面试题(最大公约数)【数学|越界处理】【网易】【2020】