指數迴圈節
在有些題目中我們需要對指數進行降冪處理才能計算。比如計算
其中這裡由於
給定
#include #include #include using namespace std;
const int n = 1000005;
typedef long long ll;
char str[n];
int phi(int n)}}
if (n > 1)
return rea;
}ll multi(ll a, ll b, ll m)
b >>= 1;
a = (a + a) % m;
}return ans;
}ll quick_mod(ll a, ll b, ll m)
b >>= 1;
a = multi(a, a, m);
}return ans;
}void solve(ll a, char str, ll c)
}else
ans += p;
}printf("%i64d\n", quick_mod(a, ans, c));
}int main()
return 0;
}
指數迴圈節
以上的公式如果第一次見到,難免有不少疑惑 為什麼可以這麼寫?限制條件為什麼是x phi c 這個公式為什麼正確?今天突發奇想,在紙上yy以後得到了以下證明 個人證明,如果有問題歡迎提出 定理 1 對於乙個數對 a,c 必然存在乙個最小的正整數 l,滿足 其中spos 是乙個大於等於0的整數 下面具體...
hdu4335 降冪公式 模迴圈節
大意找出多少個n滿足下式 範圍如此之大啊。結果做法是暴力,囧。要用到乙個降冪公式 注意括號裡的條件,那麼當n比較小的時候,就不能用這個了,n比較小,肯定是暴力嘛。那麼第乙個階段便是當n比較小,n 小於phi p 直接暴力求解。當n 大於phi p 的時候,便 可以用上面的降冪公式。還得繼續暴力,發現...
迴圈節長度以及迴圈節
迴圈節長度 兩個整數做除法,有時會產生迴圈小數,其迴圈部分稱為 迴圈節。比如,11 13 6 0.846153846153 其迴圈節為 846153 共有6位。這是一道藍橋杯的題目,試卷上是乙個填空題,思路就是不斷的對除數取餘,然後乘10後再取餘,直到餘數在之前出現過或者為0 結束。為什麼是這樣的呢...