1. 程式人生 > >取模方程解的個數

取模方程解的個數

題目描述

給定x和m,問在區間[a,b]上存在多少個i,使得xi % 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

題解

  • i∈(a,b),(b)max=1000000000.肯定要用到快速冪並且取模1000;
  • 取模1000,很明顯的知道,m的取值範圍為(0,999)。所以∀m>=1000,ans=0;
  • 驗證規律性。
int x=13
int a=1,b=200;
for(int i=a;i<=b;i++){
        cout<<pow_mod(x,i,1000)<<",";
    }
13,169,197,561,293,809,517,721,373,849,37,481,253,289,757,841,933,129,677,801,413,369,797,361,693,9,117,521,773,49,637,281,653,489,357,641,333,329,277,601,813,569,397,161,93,209,717,321,173,249,237,81,53,689,957,441,733,529,877,401,213,769,997,961,493,409,317,121,573,449,837,881,453,889,557,241,133,729,477,201,613,969,597,761,893,609,917,921,973,649,437,681,853,89,157,41,533,929,77,1,13,169,197,561,293,809,517,721,373,849,37,481,253,289,757,841,933,129,677,801,413,369,797,361,693,9,117,521,773,49,637,281,653,489,357,641,333,329,277,601,813,569,397,161,93,209,717,321,173,249,237,81,53,689,957,441,733,529,877,401,213,769,997,961,493,409,317,121,573,449,837,881,453,889,557,241,133,729,477,201,613,969,597,761,893,609,917,921,973,649,437,681,853,89,157,41,533,929,77,1,

看出每隔100個數就會出現一次13。可能這個時候你會覺得答案就在眼前,但結果告訴你“答案錯誤”,因為並不是所有的數每隔100次就出現一次,也不是每個數就會多次出現。
不信再試試n=2,它的前幾項裡,2和4是隻出現一次的,只有從數字8開始才出現的迴圈。分析到這裡基本夠了。
還有一個可以證明的是,如果一個數在200次內沒有出現重複的數,他就不會有重複的數了。

  • 程式設計的實現問題,①m>=1000,輸出ans=0。②0< m<1000,算出m重複出現的間隔,不重複出現輸出0,有間隔則輸出[a,b]區間內能滿足的次數。
    程式碼
以後記得再貼

相關推薦

方程個數 (迴圈節)

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

快速冪(C語言版)

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

HDU6128 二次剩余/二次域求二次剩余/LL快速乘法

con class ... brush rand 因式分解 取模 href 會點 LINK 題意:求滿足模p下$\frac{1}{a_i+a_j}\equiv\frac{1}{a_i}+\frac{1}{a_j}$的對數,其中$n,p(1\leq n\leq10^5,2\

快速冪 二進位制 【詳

本來想昨天寫的   看到了cod:ww2  我:我就玩一把,真的,就一把 然後就到了12點 真香~ 程式碼如下 不想理解可以直接拿來用 時間複雜度 logn typedef long long ll; ll quickmod(ll n) {

【資料結構查詢】POJ1840——求五元三次方程的整數個數

問題描述: 給定五元三次方程的全部係數,求出解不等於0且為[−50,50][-50,50][−50,50]之間的整數的個數。 求解方法: 將後兩項移到等式的右邊,並將前三項的全部結果遍歷出來並打表

在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007的結果輸出。

 /*        最簡單的思路:陣列的所有數兩兩比較,進行累加,空間複雜度為O(n^2)  */ class Solution { public: int InversePairs(vector<int> data) { int P

在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007的結果輸出。 即輸出P%100000000

分析:可以利用兩層for迴圈,從頭開始遍歷查詢每一個元素的逆序對數,然後求總和。也可以利用歸併排序的思想來求解。下面是利用歸併排序的思想求解 public class Solution{public int InversePairs(int[] array) {if (ar

負數運算

有人如果在python上使用%運算,肯定會遇到這樣的問題,就是它在負數上的結果和我們之前在C或JAVA上的結果不一樣。比如: -6 % 5這個運算,在python中的結果是4,但是在C/JAVA上的結果是-1 這是為什麼呢?wiki百科的解釋很好,英文好的可以

求 n元一次不定方程 個數 的 兩個版本和n種實現方法

版本1:  有方程a1*x1+a2*x2+...an*xn=N,給定n(1000=>n>=1)個係數ai(1000>=ai>=0)和N(1000>=N>0),求滿足這個方程的非負整數解(x1,x2...xn)的個數。(結果對10007取模)

The mod(%) operation 負數運算詳

Please indicate the source if you want to reprint: http://blog.csdn.net/gaoxiangnumber1 If a and d a

轉載ACM 快速冪演算法詳

快速冪取模的用途:在ACM這類競賽中,可能會遇到指數型的資料取模問題,這個時候如果直接用int或者long long儲存,就 有可能會超出計算機整數的存取範圍,而導致資料出錯。所以我們需要一種方法進行計算。而這種方法就是我們這次要講到 的快速冪取模(簡稱快速冪)。這種演算法在時間和空間上都做了儘可能的優化

【HDU 3037】大數組合之Lucas定理+擴充套件歐幾里得求逆元與不定方程一類問題

Saving Beans Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2284    Accepted S

Java%(運算)詳

一.Java的取模運算 1.實現演算法 public static double ramainder(double dividend, double dividor) { return dividend - dividend / divi

數學運算——1的個數

問題 I: 1的個數 時間限制: 1 Sec  記憶體限制: 32 MB提交: 9  解決: 6 [提交][狀態][討論版] 題目描述 對於一個給定的[0,10000]內的不能被2或5整除的整數n,n放大某些倍數後,結果會是僅由很多1組成的一個數a。現在請你找出最小的那個

poj 2065 高斯消元方程組

題意: a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1) a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1) = f(2) ...... a0*n^0 + a1*n^1+a

CSU - 1556 Jerry&#39;s trouble(高速冪)

click ostream algo printf 高速 ron main 取模 bit 【題目鏈接】:click here 【題目大意】:計算x1^m+x2^m+..xn^m(1<=x1<=n)( 1 <= n < 1 000 000, 1 &

求第n行楊輝三角(n很大,

int 為什麽不能 style code 為我 max sin clas pan 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 typedef

運算

add 結合 重要 nbsp left 但是 list padding 四則運算 腦子不好使,老是記不住(?_?),備忘一下。 模運算與基本四則運算有些相似,但是除法例外。其規則如下: (a + b) % p = (a % p + b % p) % p (a -

2017湘潭賽 A題 Determinant (高斯消元)

mina while 代數 tor mod continue 高斯消元 problem 元素 鏈接 http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1260 今年湘潭的A題 題意不難 大意是把n*(n