首页 > 其他分享 >9.2

9.2

时间:2022-09-03 01:55:25浏览次数:42  
标签:int void long leq define 9.2 mod

ABC137F

题意:

给定一个素数\(p\)和\(a_0\sim a_{p-1}\in\{0,1\}\)

找到至多\(p-1\)次的多项式\(f(x)=\sum_{i=0}^{p-1}b_ix^i(b_i\in[0,p-1])\)

满足\(f(i)\equiv a_i\ (mod\ p)\)

\(2\leq p<3000\)

题解:

神仙构造题,这个其实很像中国剩余定理,而且\(p\)是素数满足费马小定理,\(a_i\)满足只有\(0\)和\(1\),考虑构造:

如果\(a_i=1\),那么\(f(x)+=(g(x)=1-(x-i)^{p-1})\)

这个\(g(x)\)当且仅当\(x=i\)时,\(g(x)=1\),其他情况下因为费马小定理,后面那一项等于\(1\),总体等于零,不会对其他项造成影响。

这个式子用二项式定理直接展开。

#include<bits/stdc++.h>
using namespace std;
namespace red{
#define int long long
#define double long double
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define lowbit(i) ((i)&(-i))
#define mid ((l+r)>>1)
#define eps (1e-15)
    const int N=1e6+10,mod=998244353,inf=2e15;
    void __init(int n=2000) {}
    inline void main()
    {
        auto fast=[&](int x,int k,int mod) -> int
        {
            int ret=1;
            while(k)
            {
                if(k&1) ret=ret*x%mod;
                x=x*x%mod;
                k>>=1;
            }
            return ret;
        };
        int n;
        cin>>n;
        vector<int> a(n);
        for(int i=0;i<n;++i)
        {
            int x;
            cin>>x;
            if(!x) continue;
            //1-(x-i)^{n-1}
            ++a[0];
            int pw=1,com=1;
            for(int j=n-1;~j;--j)
            {
                a[j]-=pw*com%n;
                a[j]%=n;
                pw=pw*(-i)%n;
                com=com*j%n*fast(n-j,n-2,n)%n;
                
            }
        }
        for(int i=0;i<n;++i)
        {
            cout<<(a[i]+n)%n<<' ';
        }
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    red::__init();
    int qwq=1; //cin>>qwq;
    while(qwq--) red::main();
    return 0;
}
/*
1 7 5 6 8 2 6 5

0 8 5 6 8 0 8 5
3
5 6 5
3 8 5
2
3
8
*/

ABC138F

题意:

给定\(L,R\),求有多少对数字\(L\leq x\leq y\leq R\),满足\(x\mod y=x\oplus y\)

\(0\leq L\leq R\leq 10^{18}\)

模\(1e9+7\)

题解:

转化一下取模

如果\(2x\leq y\),那么\(y-x>y\%x\)

如果\(2x>y\),那么\(y-x=y\%x\)

\(x\oplus y\geq y-x\)

所以如果\(2x\leq y\),不可能满足要求。

\(2x>y\)时,

\(x\)和\(y\)二进制下的最高位相同,如果要满足\(y-x=y\oplus x\),那么\(y\&x=x\)

总结一下就是\(x,y\)的二进制位数相同,而且\(y\&x=x\)

考虑数位\(dp\),但是很难容斥,用另一种状态设置,\(dp[pos][x1][x2]\)表示第\(pos\)位,是否到达下界,是否到达上界。

#include<bits/stdc++.h>
using namespace std;
namespace red{
#define int long long
#define double long double
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define lowbit(i) ((i)&(-i))
#define mid ((l+r)>>1)
#define eps (1e-15)
    const int N=1e6+10,mod=1e9+7,inf=2e15;
    void __init(int n=2000) {}
    inline void main()
    {
        int l,r;
        cin>>l>>r;
        vector<int> d,u;
        vector dp(100,vector(2,vector<int>(2,-1)));
        function<int(int,int,int)> dfs=[&](int pos,int x1,int x2) -> int 
        {
            if(pos<0) return 1;
            if(~dp[pos][x1][x2]) return dp[pos][x1][x2];
            int &ret=dp[pos][x1][x2];ret=0;
            int t1=x1?d[pos]:0,t2=x2?u[pos]:1;
            for(int y=t1;y<=t2;++y)
                for(int x=t1;x<=y;++x)
                    ret=(ret+dfs(pos-1,x1&(x==t1),x2&(y==t2)))%mod;
            return ret;
        };
        auto solve=[&](int l,int r) -> int
        {
            while(l) d.emplace_back(l&1),l>>=1;
            while(r) u.emplace_back(r&1),r>>=1;
            // reverse(d.begin(),d.end());
            // reverse(u.begin(),u.end());
            int ans=0,tl=d.size(),tr=u.size();
            for(int i=tl;i<=tr;++i) ans=(ans+dfs(i-2,i==tl,i==tr))%mod;
            return ans;
        };
        cout<<solve(l,r)<<'\n';
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    red::__init();
    int qwq=1; //cin>>qwq;
    while(qwq--) red::main();
    return 0;
}
/*
1 7 5 6 8 2 6 5

0 8 5 6 8 0 8 5
3
5 6 5
3 8 5
2
3
8
*/

CF1717E

题意:

\[\sum_{a+b+c=n}lcm(c,gcd(a,b)) \]

\(n\leq 10^5\)

题解:

枚举\(gcd(a,b)=d\)

然后枚举\(a+b=t*d\)的\(t\),这里是调和级数。

那么\(c=n-t*d\)

然后就想知道有多少对\((a,b)\),满足\(a+b=t\)且\(gcd(a,b)=1\)

如果\(a\)和\(b\)互质,那么\(a\)和\(a+b\)互质。

且\(a+b=t\),所以\(a\)和\(t\)互质。

所以这个数量等于\(\varphi(t)\)

#include<bits/stdc++.h>
using namespace std;
namespace red{
#define int long long
#define double long double
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
#define lowbit(i) ((i)&(-i))
#define mid ((l+r)>>1)
#define eps (1e-15)
    const int N=1e6+10,mod=1e9+7,inf=2e15;
    void __init(int n=2000) {}
    inline void main()
    {
        auto lcm=[&](int x,int y) -> int
        {
            return x*y/__gcd(x,y);
        };

        int n;
        cin>>n;

        vector<int> phi(n+1);
        iota(phi.begin(),phi.end(),0);
        for(int i=1;i<=n;++i)
        {
            for(int j=2*i;j<=n;j+=i) phi[j]-=phi[i];
        }
        int ans=0;
        for(int d=1;d<=n-2;++d)
        {
            for(int g=2*d;g<=n;g+=d)
            {
                int c=n-g;
                ans=(ans+lcm(c,d)*phi[g/d])%mod;
            }
        }
        cout<<ans<<'\n';
    }
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    red::__init();
    int qwq=1; //cin>>qwq;
    while(qwq--) red::main();
    return 0;
}
/*
1 7 5 6 8 2 6 5

0 8 5 6 8 0 8 5
3
5 6 5
3 8 5
2
3
8
*/

标签:int,void,long,leq,define,9.2,mod
From: https://www.cnblogs.com/knife-rose/p/16651836.html

相关文章

  • 2022.9.2-2022年王建民JAVA课前测试
    石家庄铁道大学2022年秋季  2021级课堂测试试卷(一)(15分)课程名称:JAVA语言程序设计 任课教师:王建民       考试时间:150分钟  一、考试要求:1、按照测......
  • 9.2
    df.rename(index=None以字典的形式,赋予索引新的值,第一行,columns=None列,axis=None指定坐标轴,inplace=False)是否使用新生成的列表替换原......
  • 开学测试反思总结9.2
    今天下午完成了开学测试,java的基础测试以测验暑期成果。然而我的成绩十分不理想,没有达到12分甚至。为此我必须为之前的学习情况做反省。在暑期假期中,我因为贪玩,没有好好......
  • 2022.9.2 - ts笔记
    TypeScript中的代码清道夫:非空断言操作符value:{type!:Array,required:true},类型别名及导入导出,对数组内的对象做限制//util/type.d.ts//......
  • 9.2云计算与运用
    大数据:  云计算:云计算是处理大数据的手段           SOA概述:                 这个老师念ppt,一点都没......
  • 9.2软件构造
    软件构造概论:1.软件工程是指导计算机软件开发和维护的工程学科2.软件有开发者和使用者 软件的衰亡取决于是否有使用者 3.软件的开发过程      增量......
  • fastposter v2.9.2 最简海报生成器
    fastposterv2.9.2程序员必备海报生成器......
  • YApi-v1.9.2部署失败(Accessing non-existent property 'count' of module exports ins
    部署YApi时,出现报错信息:Accessingnon-existentproperty'count'ofmoduleexportsinsidecirculardependencyGitHub上未找到解决方案,网上发现其他同学也遇到了类似的......
  • Visual AssistX (x64) Version 10.9.2458 Cracked
    说明1.只支持VisualAssistXx64的2458版本2.只支持VisualStudio2022版本3.出现错误提示说明安装的Vax版本不对。声明敬请各位大爷:如果之前使用过其他破解版......
  • keepalived 虚拟ip可以切换(漂移),但无法通过虚拟ip访问(curl: (7) Failed connect to 192
    虚拟ip可切换  关闭192.168.59.102上的keepalived  但是访问超时:curl:(7)Failedconnectto192.168.59.211:8088;Connectiontimedout 修改MASTER路由和......