题意

计算\(\sum_{i=l}^kd(i^k)(d_i代表i的因子数)\)

分析

比赛搞了3个小时都没搞出来,有两个思维上的trick

1.要先遍历素数,再遍历[L,R],而不是枚举每个数,然后对每个数进行质因数分解

2.比赛的时候我有想过枚举素数,但是忘记因子计算公式可以分开相乘,而不用一次性求粗来,导致我们队的崩盘,我要背锅!!!

具体的做法:枚举每个素数,并枚举[L,R]中的素数的倍数,对于每个倍数,统计因子个数,用b[i]代表第i个数的因子数,具体键代码

#include <bits/stdc++.h>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a))
const ll mod = 998244353;
const int maxn=1000000;
int prime[maxn+10];
bool p[maxn+10]; inline void get_prime()
{
F(i,2,maxn)
{
if(!p[i]) prime[++prime[0]]=i;//prime[0]存储1~maxn的质数个数
for(int j=1;j<=prime[0]&&i*prime[j]<=maxn;++j)
{
p[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
} int t;
ll L,R,K,ans;
ll a[maxn+10],b[maxn+10];//a数组存储对于每个质数除后的数,b数组存放i的因子个数 void calc()
{
int len=R-L+1;
R(i,0,len) a[i]=i+L,b[i]=1;
for(int i=1;prime[i]*1LL*prime[i]<=R;++i)
{
ll x=prime[i],k=L/x*x,cnt;
if(k<L) k+=x;
for(;k<=R;k+=x) if(a[k-L]%x==0)
{
cnt=0;
while(a[k-L]%x==0) cnt++,a[k-L]/=x;
cnt=cnt*K+1;
b[k-L]=b[k-L]*cnt%mod;
}
}
ans=0;
//R(i,0,len) printf("%I64d%c",a[i],i==len-1?'\n':' ' );
R(i,0,len)
{
if(a[i]!=1) b[i]=b[i]*(K+1)%mod;
//printf("%I64d%c",b[i],i==len-1?'\n':' ' );
ans=(ans+b[i])%mod;
}
} int main()
{
get_prime();
for(scanf("%d",&t);t--;)
{
scanf("%lld %lld %lld",&L,&R,&K);
calc();
printf("%I64d\n",ans );
}
return 0;
}

最新文章

  1. 双向广搜+hash+康托展开 codevs 1225 八数码难题
  2. zstu.4019.排队购票(多维dp)
  3. Windows下PHP+Eclipse开发环境搭建 及错误解决(apache2.2服务无法启动 发生服务特定错误:1)
  4. 在ASP.NET下做了一个实验MVC的小东西
  5. android-&#39;Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 8&#39;
  6. Java 工厂模式学习
  7. 使用Unity开发HoloLens应用
  8. 报错消息写在AT SELECTION-SCREEN OUTPUT和START-OF-SELECTION事件下的区别
  9. Android万能适配器base-adapter-helper的源代码分析
  10. asp.net core利用DI实现自定义用户系统,脱离ControllerBase.User
  11. c# 测试通过
  12. react入门之使用react-bootstrap当轮子造车(二)
  13. 使用Bitbucket Pipeline进行.Net Core项目的自动构建、测试和部署
  14. 【Android学习笔记】布局的简单介绍
  15. 解决python发送multipart/form-data请求上传文件的问题
  16. Java Web 开发的JavaBean + Servlet + Sql Server
  17. 实力封装:Unity打包AssetBundle(四)
  18. 【SIKIA计划】_06_Unity2D游戏开发-拾荒者笔记
  19. Drupal 通过API动态的加入样式文件
  20. 测试sql语句性能,提高执行效率

热门文章

  1. 自己定义控件事实上非常easy1/6
  2. 关于结构体的具体解说,C、C++中的差别
  3. Sublime Text使用
  4. C++类使用static小例子(新手学习C++)
  5. Printf可变參数使用
  6. TreeSet实现Comparator接口的排序算法的分析
  7. List 调用 remove 方法时抛出 java.lang.UnsupportedOperationException 异常原因
  8. 小程序多级下拉菜单demo
  9. Cocos Console命令总结
  10. firefox 45 版本