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 数学公式推导的更多相关文章
- HDU 5734 Acperience ( 数学公式推导、一元二次方程 )
题目链接 题意 : 给出 n 维向量 W.要你构造一个 n 维向量 B = ( b1.b2.b3 ..... ) ( bi ∈ { +1, -1 } ) .然后求出对于一个常数 α > 0 使得 ...
- HDU 4816 Bathysphere(数学)(2013 Asia Regional Changchun)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4816 Problem Description The Bathysphere is a spheric ...
- HDU 5584 LCM Walk 数学
LCM Walk Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5584 ...
- HDU 4336 Card Collector 数学期望(容斥原理)
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意简单,直接用容斥原理即可 AC代码: #include <iostream> ...
- HDU 5570 balls 期望 数学
balls Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5570 De ...
- hdu 4710 Balls Rearrangement (数学思维)
意甲冠军:那是, 从数0-n小球进入相应的i%a箱号.然后买一个新的盒子. 今天的总合伙人b一个盒子,Bob试图把球i%b箱号. 求复位的最小成本. 每次移动的花费为y - x ,即移动前后盒子编号 ...
- HDU 4790 Just Random 数学
链接:pid=4790">http://acm.hdu.edu.cn/showproblem.php?pid=4790 意:从[a.b]中随机找出一个数字x,从[c.d]中随机找出一个 ...
- HDU 1018-Big Number(数学)
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1840 Equations (简单数学 + 水题)(Java版)
Equations 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1840 ——每天在线,欢迎留言谈论. 题目大意: 给你一个一元二次方程组,a(X^2 ...
随机推荐
- selenium登录实验楼
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.s ...
- k8s集群升级
集群升级 由于课程中的集群版本是 v1.10.0,这个版本相对有点旧了,最新版本都已经 v1.14.x 了,为了尽量保证课程内容的更新度,所以我们需要将集群版本更新.我们的集群是使用的 kubeadm ...
- 一个MySQL JDBC驱动bug引起的血案
1.1 问题背景 公司是做电商系统的,整个系统搭建在华为云上.系统设计的时候,考虑到后续的用户和订单数量比较大,需要使用一些大数据库的组件.关系型数据库这块,考虑到后续数据量的快速增长,不是 ...
- Ubuntu 安装 QtCreator (version : Qt 5.9.8)
平台 :Ubuntu 16.04 QT :5.9.8 (open source) 首先去QT安装包下载安装包,为了保持与arm板子的统一,本人选择了 5.9.8 版本的QT 可 ...
- 作业13:Map相关知识点(一)
一 Map相关类图 二 Map接口 1 Map接口中的方法 jdk 方法名 简单描述 put(K,V):V 添加value,当Key对应无值,返回null;有值则返回上一个值.(覆盖式,可以反复覆盖前 ...
- Visual Studio新建类自动添加注释
修改 VS中新建类的模板 如以下地址:D:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSha ...
- 【ES6 】Promise
Promise对象定义: 用来处理异步编程 Promise对象的特点 对象的状态不受外界影响 一旦状态改变,就不会再变,任何时候都可以得到这个结果 Promise对象的状态 pending(进行中) ...
- TypeScript入门四:TypeScript的类(class)
TypeScript类的基本使用(修饰符) TypeScript类的抽象类(abstract) TypeScript类的高级技巧 一.TypeScript类的基本使用(修饰符) TypeScript的 ...
- JavaScript-->基础类型和引用类型的区别
先了解一下数组的基础知识:附代码(数组属于引用类型的对象) <!DOCTYPE html> <html lang="en"> <head> &l ...
- 使用display:table实现两列自适应布局
在张鑫旭大神那边看到的方法,我自己写了一遍,稍微添加了一些自己的风格特色. IE6/7不支持这个属性,从IE8开始支持这个属性,对于IE6/7可以用display:inline-block解决. ta ...