当前位置: 首页 > news >正文

UVa11426 最大公约数之和(正版)

题面

\(\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}gcd(i, j)\)
n<=4000000,数据组数T<=100
答案保证在64位带符号整数范围内(long long就好)

Sol

之前做了一道假的
先不管i,j是否有序,我们就求\(\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i, j)\)
最后\(ans=(ans - (n + 1) * n / 2) / 2\)即可
推导
\(ans=\sum_{d=1}^{n}\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\mu(i)*\lfloor\frac{n}{i*d}\rfloor^2\)
\(用k替换i*d,ans=\sum_{k=1}^{n}\lfloor\frac{n}{k}\rfloor^2\sum_{d|k}\mu(\frac{k}{d})d\)
\(\sum_{d|k}\mu(\frac{k}{d})d\)是积性函数,线性筛即可
加上数论分块

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Zsydalao 666
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(4e6 + 1);
 
IL ll Read(){
    char c = '%'; ll x = 0, z = 1;
    for(; c > '9' || c < '0'; c = getchar()) if(c == '-') z = -1;
    for(; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0';
    return x * z;
}
 
int prime[_], num;
ll f[_];
bool isprime[_];
 
IL void Prepare(){
    isprime[1] = 1; f[1] = 1;
    for(RG int i = 2; i < _; ++i){
        if(!isprime[i]) prime[++num] = i, f[i] = i - 1;
        for(RG int j = 1; j <= num && i * prime[j] < _; ++j){
            isprime[i * prime[j]] = 1;
            if(i % prime[j])  f[i * prime[j]] = f[i] * f[prime[j]];
            else{  f[i * prime[j]] = f[i] * prime[j]; break;  }
        }
    }
    for(RG int i = 2; i < _; ++i) f[i] += f[i - 1];
}
 
int main(RG int argc, RG char *argv[]){
    Prepare();
    while(Zsydalao == 666){
        RG ll n = Read(), ans = 0;
        if(!n) break;
        for(RG ll k = 1, j; k <= n; k = j + 1){
            j = n / (n / k);
            ans += (n / k) * (n / k) * (f[j] - f[k - 1]);
        }
        printf("%lld\n", (ans - n * (n + 1) / 2) / 2);
    }
    return 0;
}

转载于:https://www.cnblogs.com/cjoieryl/p/8288009.html

相关文章:

  • mac os下通过命令行的方式编译c++代码并在xcode里引用
  • 房地产英语 Real estate词汇
  • 根据Forms名找出其所归属的权限组
  • oss web直传
  • dd-wrt达到300Mbps的关键设置
  • 跨域
  • [转载] 考试经验——2011下半年信息系统项目管理师论文52分者谈论文写作经验...
  • 『TensorFlow』TFR数据预处理探究以及框架搭建
  • shell开发基础:准备100万条测试数据在MYSQL中
  • 十个生成模型(GANs)的最佳案例和原理 | 代码+论文
  • Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
  • Spring Boot快速入门(一):Hello Spring Boot
  • 一致性hash
  • LabView和DLL中的参数问题
  • Oracle高级复制
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【node学习】协程
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • ➹使用webpack配置多页面应用(MPA)
  • android 一些 utils
  • canvas绘制圆角头像
  • css布局,左右固定中间自适应实现
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • express如何解决request entity too large问题
  • HTTP那些事
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java知识点总结(JavaIO-打印流)
  • js对象的深浅拷贝
  • leetcode讲解--894. All Possible Full Binary Trees
  • opencv python Meanshift 和 Camshift
  • 程序员最讨厌的9句话,你可有补充?
  • 服务器从安装到部署全过程(二)
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 那些被忽略的 JavaScript 数组方法细节
  • 驱动程序原理
  • 一、python与pycharm的安装
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • MyCAT水平分库
  • 阿里云移动端播放器高级功能介绍
  • 通过调用文摘列表API获取文摘
  • !!Dom4j 学习笔记
  • #QT(一种朴素的计算器实现方法)
  • (分布式缓存)Redis哨兵
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十) 初识 Docker file
  • (四) 虚拟摄像头vivi体验
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET6 命令行启动及发布单个Exe文件
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET微信公众号开发-2.0创建自定义菜单