大意找出多少個n滿足下式
範圍如此之大啊。結果做法是暴力,囧。
要用到乙個降冪公式:
注意括號裡的條件,那麼當n比較小的時候,就不能用這個了,n比較小,肯定是暴力嘛。
那麼第乙個階段便是當n比較小,n!小於phi(p),直接暴力求解。
當n!大於phi(p)的時候,便 可以用上面的降冪公式。還得繼續暴力,發現n!%phi(p)會出現0,這是必然的,至少n>=phi(p)為0
,那麼(n+1)!%phi(p)也為0,這便出現了重複,轉變為n^(phi(p))%p==b的問題了。固定了指數,根據鴿巢原理,餘數是迴圈的,那麼只
要找出p個的結果,之後通過迴圈節求解便可以了。
當p為1的時候,b為0,這時候答案是m+1,不過m可能為2^64-1,如果加1的話就溢位了,這裡太坑了
#include
#include
#include
#include
#include
#include
#define ll unsigned long long
//#define mod 1000000007
#define eps 1e-6
#define zero(a) fabs(a)ll ret=1;
for(ll i=2;i*i<=m;i++)
if(m%i==0) }
if(m>1)
ret*=m-1;
return ret; }
ll powmod(ll a,ll b,ll mod)
return ret; }
ll b,p,m,ring[100005];
int main()
ll i=0,phi=get_eular(p),fac=1,ans=0;
//第乙個環節,n!for(i=0;i<=m&&fac<=phi;i++)
fac=fac%phi;
//第二個環節,n^(n!%phi(p)+phi(p)),直到指數固定為phi(p)
for(;i<=m&&fac;i++)
if(i<=m)
ll idx=(m-i+1)/p;
ans+=cnt*idx;
ll remain=(m-i+1)%p;
for(int j=0;jif(ring[j]==b)
ans++; }
printf("%i64u\n",ans); }
return 0; }
433 島嶼的個數
4.11 陣列統一賦值的函式arrays.fill 感覺自己的想法很野啊,用總的點的個數去減。就是要注意邊界值,陣列是從下標0開始的,一定要注意。public class solution 行數 int m grid 0 length if m 0 列數 int count m n boolean ...
python lintcode 433島嶼的個數
給乙個01矩陣,求不同的島嶼的個數。0代表海,1代表島,如果兩個1相鄰,那麼這兩個1屬於同乙個島。我們只考慮上下左右為相鄰。您在真實的面試中是否遇到過這個題?yes 樣例 在矩陣 1,1,0,0,0 0,1,0,0,1 0,0,0,1,1 0,0,0,0,0 0,0,0,0,1 中有 3 個島.cl...
itouch4 3 3完美越獄5 0 1
備份itunes資料,以及用小雨傘備份shsh檔案 為了完美越獄降級則需要備份相應版本的shsh檔案 下好5.0.1韌體,因為聯機更新速度特別慢 shift restore選擇韌體,出現3194error 公升級成功 完美越獄帖子 挺簡單的,只是進入dfu模式稍微麻煩了那麼一點點,也還ok啦 ito...