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. PostgreSQL练习3

    select dname,count(ename),avg(sal),sum(sal) from emp e,dept d where e.deptno=d.deptno group by dname ...

  2. vue—组件基础了解

    什么是组件? 组件是vue中的一个可复用实例,所以new Vue()是vue中最大的那个组件,根组件,有名字,使用的时候以单标签或双标签使用 vm = newVue() 是最大的组件,具有很多实用性的 ...

  3. SvcUtil.exe工具生成客户端代理类

    1.以管理员身份运行vs下命令工具: 2.运行代码示例:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>svcutil http: ...

  4. luogu2261余数求和题解--整除分块

    题目链接 https://www.luogu.org/problemnew/show/P2261 分析 显然\(k\) \(mod\) \(i=k-\lfloor {k/i}\rfloor\) \(\ ...

  5. springboot-异步、发送邮件(二)

    @Test //发送复杂邮件 void contextLoads2() throws MessagingException { MimeMessage mimeMessage = mailSender ...

  6. QT调用CHM方法

    QDesktopServices desktopServices;QString strUrl=QCoreApplication::applicationDirPath () ;strUrl=QStr ...

  7. Android实习结束后的阶段性总结

    2015年4月14日即将实习结束,在过去的五六个月里,对于Android开发还是学到了很多,临走前将以前做的笔记整理一下,自己也再回顾一次.零散是必然的,也可能只是一小段代码片段,但都是曾经我在学An ...

  8. mysql 利用 case 批量更新

  9. ES查询语句

    记录常用的es 查询 聚合 GET _cat / indices GET / p_ext_develop / _mapping / g GET / p_ext_develop / _analyze { ...

  10. u-boot从nand 启动时的问题解决记录

    u-boot从nand 启动时的问题解决记录 问题描述: 使用u-boot-1.1.6版本u-boot移植到JZ2440开发板上,当前已经能够从Nor启动,但是不能从Nand正常启动(u-boot大小 ...