《P2303 [SDOI2012] Longge 的问题》

题目背景

Longge 的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。

题目描述

现在问题来了:给定一个整数 n,你需要求出 i=1∑n​gcd(i,n),其中 gcd(i,n) 表示 i 和 n 的最大公因数。

输入格式

输入只有一行一个整数,表示 n。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1复制

复制代码
6

输出 #1复制

复制代码
15

说明/提示

数据规模与约定
  • 对于 60% 的数据,保证 n≤216。

  • 对于 100% 的数据,保证 1≤n<232。

  • 代码实现:

    复制代码
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    long long res=1, n;
    
    int main() {
        scanf("%lld", &n);
        long long m = n;
        for (long long i=2; i*i<=n; ++i) {
            if (n%i == 0) {
                m /= i;
                int cnt = 0;
                while (n%i == 0) ++cnt, n /= i;
                res = res * (cnt*(i-1) + i);
            }
        }
        if (n != 1) m /= n, res = res * (2*n - 1);
        cout << res * m << endl;
        return 0;
    }
相关推荐
Liu628884 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
AI科技星4 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
条tiao条5 小时前
KMP 算法详解:告别暴力匹配,让字符串匹配 “永不回头”
开发语言·算法
干啥啥不行,秃头第一名5 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
tobias.b5 小时前
计算机基础知识-数据结构
java·数据结构·考研
zzh940776 小时前
Gemini 3.1 Pro 硬核推理优化剖析:思维织锦、动态计算与国内实测
算法
2301_807367196 小时前
C++中的解释器模式变体
开发语言·c++·算法
愣头不青6 小时前
617.合并二叉树
java·算法
MIUMIUKK7 小时前
双指针三大例题
算法
灵感__idea7 小时前
Hello 算法:复杂问题的应对策略
前端·javascript·算法