洛谷 多少個1?(BSGS)

2021-08-28 11:35:17 字數 1141 閱讀 2587

給定整數kk和質數mm,求最小的正整數nn,使得 11\cdots111⋯1(n個1) \equiv k \pmod m≡k(modm)

說人話:就是 111...1111 mod m =k

輸入格式:

第一行兩個整數,分別表示kk和mm

輸出格式:

乙個整數,表示符合條件最小的nn

輸入樣例#1:複製

9 17
輸出樣例#1:複製

3
30%的資料保證m\leq 10^6m≤106

60%的資料保證m\leq 5*10^7m≤5∗107

100%的資料保證2\leq m\leq 10^,0\leq k< m2≤m≤1011,0≤k思路:即求最小的n滿足(pow(10, n)-1)/9 % m = k。化簡一下pow(10, n) % m = 9*k+1, bsgs即可,模數較大用__int128。

# include using namespace std;

typedef long long ll;

typedef __int128 int;

int a,b,c,m;

mapmp;

inline int read()

while (c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-'0',c=getchar();

return x*w;

}inline void out(int x)

int qsm(int x)

return sum;

}int solve()*/

int p=false;

m=(int)ceil(sqrt((double)c));

int ans;

for (int i=0;i<=m;i++)

ans = ans*a%c;

mp[ans]=i;

}int t = qsm(m); ans=1;

for(int i=1;i<=m;i++)

}//if(!p) printf("no solution\n");

}int main()

洛谷P4884 多少個1?

d es crip toin descriptoin descri ptoi n 求多少個1連在一起mod m kmod m k modm k 資料範圍 0 k 10 110 leq k0 k1011so luti on solution soluti on問題等價於10n 19 k mo dm f...

XTU OJ 迴圈3 有多少個1?

計算機中儲存的整數都是按補碼的型式,乙個32位有符號整數的補碼的定義為 如果x 0,則x的補碼等於x的二進位制表示 如果x 0,那麼x的補碼為2 32 x的二進位制表示。請根據給定的整數,求出它的補碼包含有多少位為1。輸入每行乙個樣例,為乙個整數 可以用int表示 輸出每行輸出乙個對應樣例的結果。s...

1 n中有多少個9

首先我們先來分析一下題目的意思 1 n中有多少個9,什麼意思呢,舉個例子 1 100中有多少個9,大家肯定一下子就會覺得簡單啊,直接對所有數取模10等於9的不就是嘛。仔細分析一下,這麼想對嗎?很明顯不對啊,90 91 92 這些除個位之外其它位上也可能有9,所以正確的是將各位上的9數一下即為正解。那...