HDU - 5528Count a * b

  照着这个写的,忘了哪个大佬博客里的了

  但很多初学者,像我一样可能不懂其中一些符号的意义,还有为什么可以这样推导,所以我自己又推导了一下,并用自己的观点解释了下一些自己不懂的过程。

  至于mod264,是因为中途计算结果可能超long long,所以注意使用unsigned long long

 #include<cstdio>
typedef unsigned long long ull;
typedef long long ll;
const int N=;
bool nop[N]={false};
int pn,pri[N];
void initp()
{
pn=;
for(int i=;i<N;i++)
{
if(!nop[i])
pri[pn++]=i;
for(int j=;j<pn&&i*pri[j]<N;j++)
{
nop[i*pri[j]]=true;
if(i%pri[j]==)
break;
}
}
}
ull solve(int x)
{
ull ans1=1ull,ans2=1ull*x;
for(int i=;i<pn&&pri[i]*pri[i]<=x;i++)
{
if(x%pri[i]==)
{
ll sum=1ll;
int exp=,p=;
while(x%pri[i]==)
{
p*=pri[i];
sum+=1ll*p*p;
x/=pri[i];
exp++;
}
ans1*=1ull*sum;
ans2*=1ull*(exp+);
}
}
if(x>)
{
ans1*=1ull*x*x+;
ans2*=2ull;
}
return ans1-ans2;
}
int main()
{
initp();
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%llu\n",solve(n));
}
return ;
}

项式分解

#include<cstdio>
typedef unsigned long long ull;
const int N=;
bool nop[N]={false};
int pn,pri[N],pa,pp[N],exp[N];
ull ans1,ans2;
void initp()
{
pn=;
for(int i=;i<N;i++)
{
if(!nop[i])
pri[pn++]=i;
for(int j=;j<pn&&i*pri[j]<N;j++)
{
nop[i*pri[j]]=true;
if(i%pri[j]==)
break;
}
}
}
void getFac(int x)
{
pa=;
for(int i=;i<pn&&pri[i]*pri[i]<=x;i++)
{
if(x%pri[i]==)
{
pp[pa]=pri[i];
exp[pa]=;
while(x%pri[i]==)
{
x/=pri[i];
exp[pa]++;
}
pa++;
}
}
if(x>)
{
pp[pa]=x;
exp[pa++]=;
}
}
void dfs(int pos,int xx)
{
if(pos>=pa)
{
ans1+=1ull*xx*xx;
return ;
}
dfs(pos+,xx);
for(int i=,p=;i<exp[pos];i++)
{
p*=pp[pos];
dfs(pos+,xx*p);
}
}
ull solve(int x)
{
ans1=0ull;
ans2=1ull*x;
getFac(x);
dfs(,);
for(int i=;i<pa;i++)
ans2*=1ull*(exp[i]+);
return ans1-ans2;
}
int main()
{
initp();
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%llu\n",solve(n));
}
return ;
}

唯一分解

HDU - 5528Count a * b 数学公式推导的更多相关文章

  1. HDU 5734 Acperience ( 数学公式推导、一元二次方程 )

    题目链接 题意 : 给出 n 维向量 W.要你构造一个 n 维向量 B = ( b1.b2.b3 ..... ) ( bi ∈ { +1, -1 } ) .然后求出对于一个常数 α > 0 使得 ...

  2. HDU 4816 Bathysphere(数学)(2013 Asia Regional Changchun)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 Problem Description The Bathysphere is a spheric ...

  3. HDU 5584 LCM Walk 数学

    LCM Walk Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5584 ...

  4. HDU 4336 Card Collector 数学期望(容斥原理)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意简单,直接用容斥原理即可 AC代码: #include <iostream> ...

  5. HDU 5570 balls 期望 数学

    balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5570 De ...

  6. hdu 4710 Balls Rearrangement (数学思维)

    意甲冠军:那是,  从数0-n小球进入相应的i%a箱号.然后买一个新的盒子. 今天的总合伙人b一个盒子,Bob试图把球i%b箱号. 求复位的最小成本. 每次移动的花费为y - x ,即移动前后盒子编号 ...

  7. HDU 4790 Just Random 数学

    链接:pid=4790">http://acm.hdu.edu.cn/showproblem.php?pid=4790 意:从[a.b]中随机找出一个数字x,从[c.d]中随机找出一个 ...

  8. HDU 1018-Big Number(数学)

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  9. HDU 1840 Equations (简单数学 + 水题)(Java版)

    Equations 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1840 ——每天在线,欢迎留言谈论. 题目大意: 给你一个一元二次方程组,a(X^2 ...

随机推荐

  1. Java多线程(九):生产者消费者模型

    生产者消费者模型 生产者:生产任务的个体: 消费者:消费任务的个体: 缓冲区:是生产者和消费者之间的媒介,对生产者和消费者解耦. 当 缓冲区元素为满,生产者无法生产,消费者继续消费: 缓冲区元素为空, ...

  2. hdu 6077多校签到

    #include <iostream> #include <cstdio> using namespace std; ][]; int f(int pos) { ; ;i< ...

  3. YOLO 学习之路

    参考自官网  https://pjreddie.com/darknet/install/ 1. 下载darknet  并编译 git clone https://github.com/pjreddie ...

  4. SSE指令集加速之 I420转BGR24

    void yuv420_to_rgb24_sse3(uint8_t *yp, uint8_t *up, uint8_t *vp, int sy, int suv, int width, int hei ...

  5. maven 私服 nexus 安装

    1.去官方下载他的免费版,人民称为oss版(这一步自行百度去官网解决),官网:https://www.sonatype.com/ 2.下载好后,解压是两个文件夹: 3.配置环境变量:  4.安装生成w ...

  6. 三台服务器的时间同步-Linux

    192.168.1.30    做服务器时间 192.168.1.40   同步30 192.168.1.50  同步30 step1.在30机器上修改ntp.conf 添加: restrict  1 ...

  7. opencv3.0中contrib模块的添加+实现SIFT/SURF算法

    平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake+Anaconda3(python3.7.0) Issue说明:Opencv3.0版本已经发布了有一段时间,在这段 ...

  8. C# 一个数组集合,任意组合,不遗漏,不重复

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  9. xgboost&lightgbm调参指南

    本文重点阐述了xgboost和lightgbm的主要参数和调参技巧,其理论部分可见集成学习,以下内容主要来自xgboost和LightGBM的官方文档. xgboost Xgboost参数主要分为三大 ...

  10. C语言根据结构体成员变量的地址,得到结构体的地址

    看nginx代码时发现双链表使用的是这种方法,记录一下 给出一个实例来说明 struct father_t {    int a;    char *b;    double c;}f;char *p ...