C++关于逆元的问题?

描述
在模1000000007的意义下,求b分之a mod 1000000007等于多少。
输入
第一行一个整数tim表示数据组数。
接下来tim行,每行两个整数表示a和b。
1<=tim<=10000,1<=a,b<=1000000000。
输出
输出tim行,每行一个整数表示答案。
样例输入
2
2 1
1 2
样例输出
2
500000004

咋理解,a=1,b=2,b分之a mod 1000000007 等于 50000004呢

500000004怎么算的。。。

AC代码:

#include<iostream>
using namespace std;
const int mod = 1e9 + 7;
int ksm(int a,int b)
{
    int ans = 1;
    while(b > 0)
    {
        if(b % 2 == 1)
        {
            ans = (long long)ans * a % mod;
        }
        b = b / 2;
        a = (long long)a * a % mod;
    }
    return ans;
}

int main()
{
    int tim;
    cin>>tim;
    while(tim--)
    {
        int a,b;
        cin>>a>>b;
        cout<<(long long)a * ksm(b,mod - 2) % mod<<endl;
    }
    return 0;
}