Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <iomanip>
- #include <tuple>
- #include <math.h>
- #include <set>
- #include <stack>
- #include <bitset>
- #include <map>
- #include <queue>
- #include <random>
- #include <unordered_set>
- #include <unordered_map>
- #define DEBUG
- #define fi first
- #define se second
- #define pqueue priority_queue
- #define pb(x) push_back(x)
- // #define endl '\n'
- #define all(x) x.begin(), x.end()
- #define int long long
- #define mk(a, b) make_pair(a, b)
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef vector<int> vi;
- typedef vector<vector<int> > vvi;
- typedef vector<ull> vull;
- typedef vector<ll> vll;
- // typedef tuple<int, int, int> tiii;
- typedef pair<int, int> pii;
- typedef vector<pair<int, int> > vpii;
- typedef vector<bool> vb;
- typedef vector<string> vs;
- typedef vector< vector<int> > vvi;
- typedef vector<char> vc;
- const int INF = 1e9;
- const ll INFLL = 1e18;
- const int MOD = 1000000007;
- const int MAXN = 3e5;
- //const ld eps = 1e-6;
- const ld eps2 = 1e-9;
- const int MOD2 = 998244353;
- const int dosz = 5e5;
- const int SZ = (1<<18);
- const ld PI = atan2l(0, -1);
- void fast_io(){
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- #ifdef DEBUG
- // freopen("a.in", "r",stdin);
- #else
- // freopen("mxnl.in", "r", stdin);
- // freopen("mxnl.out", "w", stdout);
- #endif
- }
- int gcd(int a, int b){
- return (b?gcd(b, a%b):a);
- }
- void solve(){
- int n;
- cin >> n;
- if(n==2){
- cout << 1 << endl;
- return;
- }
- int ans = 2;
- int lol = n-1;
- for(int i=2; i*i<=n-1; i++){
- if((n-1) % i == 0){
- ans++;
- // cout << i << " ";
- if((n-1)/i != i){
- ans++;
- // cout << (n-1)/i << " ";
- }
- }
- }
- for(int i=2; i*i<=n; i++){
- if(n%i == 0){
- int beta_n = n;
- while(beta_n % i == 0){
- beta_n /= i;
- }
- if(beta_n % i == 1){
- // cout << i << " ";
- ans++;
- }
- if(i!=n/i){
- beta_n = n;
- int kek = n/i;
- while(beta_n % kek == 0){
- beta_n /= kek;
- }
- if(beta_n % kek == 1){
- // cout << kek << " ";
- ans++;
- }
- }
- }
- }
- // cout << endl;
- cout << ans << endl;
- // cout << ans << endl;
- }
- signed main() {
- fast_io();
- int q = 1;
- // cout << fixed << setprecision(6);
- // cin >> q;
- // cout << 1 << endl;
- while(q--){
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement