题目链接:牛客周赛Round 51 D
周日的时候没仔细读,今天重看发现a是比b大很多的,算是一个高精度除法的问题,读入采用string类型,对于string类型的处理就是用一个char类型的变量去遍历,减去字符0得到数字值,从高位到低位转化刚好就是字符串的0到末尾,按顺序取出转化成数字,先前已经转化的部分乘以10再加上新转化的数字(就相当于在之前的数字末尾再加一位),每次转化都及时对b取模,最后得到与b规模相近的数值,使用__gcd(a, b)函数求得最大公因数。
梳理一下步骤:
- 较大的a按string类型读入,较小的b就按long long类型读;
- 遍历a,对其进行逐位还原,以string str = ‘123’为例, s t r [ 0 ] = ′ 1 ′ str[0] = '1' str[0]=′1′, s t r [ 0 ] − ′ 0 ′ = 1 str[0] - '0' = 1 str[0]−′0′=1(整数1), 1 × 10 + s t r [ 1 ] − ′ 0 ′ = 12 1\times10 + str[1] - '0' = 12