1. 程式人生 > >取模方程解的個數 (迴圈節)

取模方程解的個數 (迴圈節)

1046: 取模方程解的個數

時間限制: 1 Sec  記憶體限制: 128 MB
提交: 346  解決: 9
[提交][狀態][討論版][命題人:cyh]

題目描述

給定x和m,問在區間[a,b]上存在多少個i,使得x^i % 1000 = m。

輸入

輸入由多組資料構成。
每組資料一行,由四個空格分開的整數x、m、a和b組成。
0 <= x, m <= 1000000000
1 <= a <= b <= 1000000000

輸出

每組輸入資料產生一行輸出,即使得上述等式成立的i的個數。

樣例輸入

13 13 1 100
13 12 1 100
13 13 1 1000000000

樣例輸出

1
0
10000000

迴圈節,即第一次出現和第二次出現之間的間隔。有可能m只出現一次,而且由於【a,b】非常大,可以控制一下迴圈次數,避免超時,比如說200以內都沒有出現迴圈節,那麼之後也不會再出現迴圈節。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL quickpow(LL x,LL i,LL m)
{
    LL ans=1;
    while(i)
    {
        if(i&1) ans=(ans*x)%m;
        i=(i>>1);
        x=(x*x)%m;
    }
    return ans;
}
int main()
{
    LL x,m,a,b;
    while(scanf("%lld%lld%lld%lld",&x,&m,&a,&b)==4)
    {
        if(m>=1000)
        {
            printf("0\n");
            continue;
        }
        LL L,R,cnt=0,ans=0;
        for(LL i=a;i<=b;)
        {
            if(i-a>=200&&cnt<2) break;
            if(cnt==2)
            {
                ans+=(b-R)/(R-L);
                break;
            }
            if(quickpow(x,i,1000)==m&&cnt==0)
                cnt++,L=i;
            else if(quickpow(x,i,1000)==m&&cnt==1)
                cnt++,R=i;
            i++;
        }
        if(cnt<=1) printf("%lld\n",cnt);
        else printf("%lld\n",ans+2);
    }
}

相關推薦

方程個數 迴圈

1046: 取模方程解的個數 時間限制: 1 Sec  記憶體限制: 128 MB 提交: 346  解決: 9 [提交][狀態][討論版][命題人:cyh] 題目描述 給定x和m,問在區間[a,

方程個數

題目描述 給定x和m,問在區間[a,b]上存在多少個i,使得xi % 1000 = m。 輸入 輸入由多組資料構成。 每組資料一行,由四個空格分開的整數x、m、a和b組成。 0 <= x

POJ:2406-Power Strings尋找字串迴圈

Power Strings Time Limit: 3000MS Memory Limit: 65536K Description Given two strings a and b we define a*b to be their con

用牛頓方法一元非線性方程的根Matlab實現

題目:用牛頓法求方程x-cos(x)=0的實根(精確到1E-6)。 (1)要求用函式呼叫。 (2)進一步研究和絃截法作比較。 演算法分析: (1)       此題是利用牛頓方法解一元非線性方程的根。(牛頓法是把非線性方程區域性線性化的一種方法,它在單根附近具有較高的收

HDU-1358-PeriodKMP求字首迴圈

博主連結 題目 題意: 給定一個字串,求出所有迴圈的字首串, 輸出字首串的長度和迴圈的次數(大於一才算迴圈串) 解題思路: 思路是先構造出 next[] 陣列,下標為 i, 定義一個變數 j = i - next[i] 就是next陣列下標和下標對應值的差

2016多校訓練一 PowMod,hdu5728尤拉函式+指數迴圈

Declare:k=∑mi=1φ(i∗n)mod1000000007n is a square-free number.φ is the Euler's totient function. find:ans=kkkk...kmodp There are infini

POJ—2406—kmp迴圈1

Power Strings Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcd

快速冪(C語言版)

在百度文庫上下載的快速冪詳解,作者給出快速冪演算法的完整解釋(雖然我也還沒看懂,但是確實寫的很好,正在仔細研究中)用的是C語言,不同語言的讀者只好換個位啦,畢竟讀C的人較多~(原網址http://wenku.baidu.com/link?url=AQNEjQ6S-31iyR

HDU—3746—kmp迴圈2

Cyclic Nacklace CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without any surprise

Cyclic NacklaceHDU-3746KMP迴圈

CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without any surprise, there are only 99.9 yuan left.

卡特蘭數catalan數總結 卡特蘭大數、卡特蘭大數、卡特蘭數應用

本文講解卡特蘭數的各種遞推公式,以及卡特蘭數、卡特蘭大數、卡特蘭大數取模的程式碼實現,最後再順帶提一下卡特蘭數的幾個應用。 什麼是卡特蘭數呢?卡特蘭數無非是一組有著某種規律的序列。重要的是它的應用。

UVA 455 Periodic Strings字串的迴圈

UVA 455 Periodic Strings A character stringis said to have periodk if it can be formed by concatenating one or morerepetitions of anot

C/C++中符號“%”的用途 獲取一系列數值

我們知道,當A與N取模時(A%N),當A大於N, 只要A的值在變化,那麼 A%N 的結果可以取到 0,1,2,……N-1 之間的任意一個值, 所以,利用這一點,我們可以在程式中定義一個變數flag  (int flag;) , 初始化時flag=0; 再要改變的地方,呼叫

JavaScript設計模式:一、面向對象編程第二

得到 調用 帶來 方式 get 特權 style 方法封裝 面向對象 一、封裝 面向對象編程思想其中的一個特點就是封裝,通俗的講法就是把需要的功能方向在一個對象裏。遺憾的是,對於JS這種解釋性的弱類型語言沒有經典強類型語言中那樣通過class等關鍵字實現類的封裝方法,j

Pixhawk---超聲波塊加入說明I2C方式

gef -m 淘寶 .net track cti shee gpa oba 1 說明 ??在Pixhawk的固件中,已經實現了串口和i2c的底層驅動,並不須要自己去寫驅動。通過串口的方式加入超聲波的缺點是串口不夠。不能加入多個超聲波模塊,此時須要用到i

angular路由詳子路由

str edr bsp 絕對路徑 pat outer menu one const 子路由是相對路由 路由配置部分: 主要是children const routes: Routes = [ {path:‘home‘, component: HomeComponent,

樹莓派小車樹莓派、小車和紅外線塊連接多圖

post ges pos logs -m img gem 讀者 alt 正文之前 上一篇文章介紹了小車底盤以及驅動板的安裝,這一次來講一講樹莓派與驅動板以及紅外線模塊的安裝。 正文 1. 樹莓派的GPIO引腳定義: 樹莓派的GPIO引腳共分為兩種類型,一種是PHYSIC

Maven的pom.xml文件結構之基本配置packaging和多塊聚合結構微服務

second maven項目 支持 其中 jar maven 所有 了解 ack 1. packaging packaging給出了項目的打包類型,即作為項目的發布形式,其可能的類型。在Maven 3中,其可用的打包類型如下: jar,默認類型 war ejb ear r

Scala筆記整理:Scala面向對象—類詳2繼承相關

大數據 Scala [TOC] 單例 希望某個類只存在一個使用的對象,而不管有多少個調用者在使用它,就是單例的概念。 Java中的單例 package cn.xpleaf.single; /** * 單例模式-餓漢式(在屬性中先創建好對象,不管是否調用getInstance方法) * @auth

消失設計與加工FM-CAM

ext 技術 避免 定制 方便 mark 結構 計算 term FM-CAM是華天軟件專門針對泡沫加工而開發的一套設計與加工的專業工具包。它可將設計模型與相關數據直接傳遞進來達到充分利用三維實體模型的目的,提供了模型查驗與修正、面一起著色、快速識別並附加加工余量、切片分層、