HDU 1395 數論小技巧

來源:互聯網
上載者:User

數論中小技巧:因為每次只需要一個大數 mod n  的餘數,所以為了電腦運算的方便,先進行轉換一下..

                          ( a * b ) % n = [ ( a % n ) * ( b%n )  ] % n ;

                          ( a + b ) %n = [ ( a%n ) +( b%n ) ] %n ;

題意:中文

思路:歐拉定理,不過它是要求最小的整數,所以只能用歐拉定理來判斷最佳化...

           例如: 2^k mod n = 1 ;  則 k = E (n) 一定是成立的;而且如果該等式成立,那麼(2,n)一定是互質的(歐拉定理),就不證明了...

           最後用暴力來求吧,想不到更好的辦法了...

代碼:

#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        if(n%2==0 || n==1) {
            printf("2^? mod %d = 1\n",n);
            continue;
        }
        else{
            int sum=1;
            for(int i=1 ; ; i++ ){
                sum *= 2;
                if(sum%n==1){
                    printf("2^%d mod %d = 1\n",i,n);
                    break;
                }
                sum = sum%n;
            }
        }
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.