6.12高一高考集训欢乐赛
前面是题解,后面是垃圾话
T1 Efim与奇怪的成绩
贪心的找第一个可以四舍五入的,然后往上进位。
T2 Beautiful IP Addresses
因为回文,所以
T3 装饰
结论题?发现两个上界:
假设
-
当
,即 ,假设我们先拿 个都有的,然后我们可以用较多的一个替换这些 个都有的中较少的一个,这样一直平衡,最后可以分成 组。 -
当
,即 ,此时全都拿两个 ,一个 或 就行。
T4 最大子矩阵Largest Submatrix
枚举
T5 P2051 [AHOI2009] 中国象棋
清新小 DP,观察到每行每列最多填两个,设
直接 DP 即可。
T6 [BZOJ2813 奇妙的Fibonacci]
设
该定理证明如下:
引理1:
证明:根据
引理2:
证明:设
根据上面两个引理,可以得出
显然约数的个数
此时 狄利克雷前缀和 可以解决这个问题,时间复杂度
此时线性筛就可以解决这个问题。
设
设
当
还有一个细节,就是
#include<bits/stdc++.h> #define int long long typedef long long ll; typedef unsigned long long ull; inline int read(){char ch=getchar();int x=0,f=1;for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);return x*f;} const int N=1e7+10,mod=1e9+7; int f[N],sum[N],s[N],p[N],cnt[N],tot; bool vis[N]; inline int mo(int x){return x<0?(x%mod+mod)%mod:(x>=mod)?x%mod:x;} signed main(){ freopen("fibo.in","r",stdin);freopen("fibo.out","w",stdout); std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0); int q=read(); int q1=read(),a=read(),b=read(),c=read(); f[1]=1,sum[1]=1; for(int i=2;i<=c;++i){ if(!vis[i])p[++tot]=i,sum[i]=mo(i*i+1),f[i]=2,s[i]=1,cnt[i]=1; for(int j=1;j<=tot&&p[j]*i<=c;++j){ int zc=p[j]*i; vis[zc]=1; if(i%p[j]==0){ s[zc]=s[i]; cnt[zc]=cnt[i]+1; f[zc]=(cnt[zc]+1)*f[s[zc]]; sum[zc]=mo(sum[i]*p[j]%mod*p[j]%mod+sum[s[i]]); break; } cnt[zc]=1; f[zc]=mo(f[p[j]]*f[i]); sum[zc]=mo(sum[p[j]]*sum[i]); s[zc]=i; } } int S=0,ans=0; for(int i=1;i<=q;++i){ S=(S+f[q1]+(q1&1))%mod; ans=(ans+sum[q1]+4*(q1&1))%mod; q1=(q1*a+b)%c+1; } std::cout<<(ll)S<<'\n'<<(ll)ans<<'\n'; }
点击查看垃圾话
又到六月份了,都过去一年了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】