题意:

  对于所有数字分解质因子,如果某个质因子在这个区间出现,则贡献为1,求所有质因子对所有区间做的贡献。

解析:

  考虑如果所有全部区间都有这个质因子则这个质因子的贡献是n*(n+1)/2,对于任意因子,他的贡献等于区间个数减去他没有出现的区间个数,一个因子没有出现的区间就是出现的相邻两个位置之间。减去即可。

代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <cstdio>
#include <queue>
#include <cmath>
#include <map>
#include <set> using namespace std; typedef long long ll; const int maxn=1e6+; int prime[maxn];
ll a[maxn]; int pr[maxn];
void getprime(){
memset(pr,,sizeof(pr));
for(int i=;i<=maxn;i++){
if(!pr[i])pr[++pr[]]=i;
for(int j=;j<=pr[]&&pr[j]<=maxn/i;j++){
pr[pr[j]*i]=;
if(i%pr[j]==)break;
}
}
} int main(){
int n;
scanf("%d",&n);
memset(prime,,sizeof(prime));
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
}
getprime();
ll num=;
for(int i=;i<=n;i++){ for(int j=;pr[j]<=a[i]/pr[j];j++){
if(a[i]%pr[j]==){
while(a[i]%pr[j]==){
a[i]=a[i]/pr[j];
}
ll x=i-prime[pr[j]]-; num+=(x+)*x/; prime[pr[j]]=i;
}
}
if(a[i]!=){
ll x=i-prime[a[i]]-; num+=(x+)*x/; prime[a[i]]=i;
}
}
ll ans=n;
ans=ans*(ans+)/;
ll nn=;
for(int i=;i<maxn;i++){
if(prime[i]){
nn++;
ll x=n-prime[i]; num+=(x+)*x/; prime[i]=n+;
}
}
//printf("%lld....\n",nn);
ans=ans*nn;
printf("%lld\n",ans-num);
return ;
}

最新文章

  1. linux(centos)用户与权限
  2. iOS 消息转发
  3. java数据类型图:
  4. 在浏览器中打不开Oracle 11gR2的企业管理器页面
  5. linux下的gdb调试工具--内存调试
  6. c++,extern “c”
  7. Dvtm -- 平铺式终端
  8. Oracle JDBC版本区别(转)
  9. cocoaPods的安装使用 以及 Carthage
  10. pthread创建线程的简单演示
  11. 渐进式Web应用(PWA)入门教程(下)
  12. springboot~环境搭建与Helloworld
  13. struts2框架学习之第一天
  14. 浅谈python函数签名
  15. DataGuard----&gt;物理StandBy的角色切换之switchover
  16. JSON parse error: Cannot deserialize instance of `int` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc
  17. JQ 文本超出
  18. C# 生成月份及天选择列表,方便做下拉框联动
  19. Spring: 读取 .properties 文件地址,json转java对象,el使用java类方法相关 (十三)
  20. IOS开发基础Object-C(12)—单例模式

热门文章

  1. Android获取CPU编号
  2. oo第三次作业--jml
  3. Blazor client-side + webapi (.net core 3.1) 添加jwt验证流程(非host)第三章 客户端存储及验证
  4. C#设计模式学习笔记:(6)适配器模式
  5. 通过sql的stuff 把一列几行的记录拼接在一行一个字段
  6. 【一起刷LeetCode】整数反转
  7. java new一个对象的过程中发生了什么?
  8. 有关css编写文字动态下划线
  9. Windos framework .net 3.5规则失败
  10. 适合小白的大白话讲解---&gt;Git与Github的区别