• D. Unusual Sequences(容斥)


    D. Unusual Sequences

    隔板法 + 容斥原理

     1 //容斥(莫比乌斯反演)
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 #define LL long long 
     5 const int mod = 1e9+7;
     6 LL quickpow(LL a, LL b, LL mod){
     7     LL temp = a % mod, res = 1;
     8     while(b){
     9         if(b & 1)  res = res * temp % mod;
    10         b >>= 1;
    11         temp = temp * temp % mod;
    12     }
    13     return res;
    14 }
    15 map<int, LL> mp;
    16 
    17 LL solve(int x){
    18     if(x == 1) return 1;
    19     if(mp.count(x)) return mp[x];
    20     mp[x] = quickpow(2, x-1, mod);
    21     for(int i = 2; i * i <= x; i++){
    22         if(x % i == 0){
    23             mp[x] = (mp[x] - solve(i) + mod) % mod;
    24             if(i != x / i) mp[x] = (mp[x] - solve(x / i) + mod) % mod;
    25         }
    26     }
    27     mp[x] = (mp[x] - solve(1) + mod) % mod;
    28     return mp[x];
    29 }
    30 
    31 int main(){
    32     ios::sync_with_stdio(0);
    33     int x, y;
    34     while(cin>>x>>y){
    35         if(y % x != 0){
    36             cout<<0<<endl;
    37         }else{
    38             cout<<solve(y / x)<<endl;
    39 
    40         }
    41     }
    42 
    43 }
    View Code
  • 相关阅读:
    Django(二)
    VSCode写Django的坑
    AXF—个Django项目
    Linux
    安装软件方面的问题及解决方法杂烩
    Python
    环境搭建
    Django(一)
    关于excel表
    (十)selenium实现微博高级搜索信息爬取
  • 原文地址:https://www.cnblogs.com/yijiull/p/8322024.html
Copyright © 2020-2023  润新知