一整數a 對模數n之模反元素是指滿足以下公式的整數b
a-1 ≡ b (mod n)
也可以寫成以下的式子
ab ≡ 1 (mod n)
現在給定兩個數字a,n,求一個最小正整數b,若不存在則輸出”No Inverse”
輸入說明 :
有多筆測資,每組第一行有兩個數字a,n,(1 ≦ a,n ≦ 100,000,000)
輸出說明 :
一個最小正整數 b,若不存在則輸出” No Inverse”
範例輸入 :
79 62
96 47
49 28
範例輸出 :
11
24
No Inverse
程式碼 :
#include<stdio.h>
int main()
{
    int a, n, quotient, remainder, temp_a, temp_b, temp_c, temp_n;
    
    while(scanf("%d%d",&a,&n)==2)
    {
        if(n == 1)
        {
            printf("No Inverse\n");
            continue;
        }
        
        temp_n = n;
        temp_a = 0;
        temp_b = 1;
        temp_c = 1;
        
        while(1)
        {
            quotient = temp_n / a;
            remainder = temp_n % a;
            if(remainder == 0)
            {
                if(a == 1)
                    printf("%d\n",temp_c<0?(temp_c+n):temp_c);
                else
                    printf("No Inverse\n");
                break;
            }
            temp_n = a;
            a = remainder;
            
            temp_c = (temp_a - quotient*temp_b) % n;
            
            temp_a = temp_b;
            temp_b = temp_c;
        }
    }
    
    return 0;
}
http://zerojudge.tw/ShowProblem?problemid=a289
 
看不懂題目ㄝ==
回覆刪除一整數a 對模數n之模反元素是指滿足以下公式的整數b
a-1 ≡ b (mod n)
也可以寫成以下的式子
ab ≡ 1 (mod n)
現在給定兩個數字a,n,求一個最小正整數b,若不存在則輸出”No Inverse”
給你 ab / n = 商數...1,給你a和n,並且不用管商數,求b
回覆刪除