bzoj 2749 杂题
我们可以发现,phi(x)与x相比,相当于x的每个质因子-1后再分解质因数,添加到现有的质因子中,比如质因子13相当于将13变成12,然后分解成2*2*3,再将2的质数+2,3的指数+1,除了质因子2之外的所有质因子都满足这一性质,每次有一个质因子2相当于变成1,也就是没有了。那么我们可以将问题转化成一个大数,每个质因子分解到最后会分成多少个2,比如刚才的13,变成2*2*3,然后3变成2,那么13求phi到最后就是3个2,也就是消掉一个13需要求3次phi,如果我们可以处理出每个质数最后分解成多少个2,就可以解决问题。
求分解多少个2可以线性筛的时候处理,设w[i]代表i这个数分解成多少个2,那么如果i为质数,w[i]=w[i-1],否则w[i*prime[j]]=w[prime[j]]+w[i]。开始现将w[2]设为1.
还有就是如果开始的大数是奇数的时候,我们需要将答案加1,因为第一次求phi不会有2这一项被消掉,第二次开始才会不断地消2,每个质数分解之后-1,一定会是偶数,所以每次都能产生至少一个新的2的质因子,这样就保证了这个算法的正确性。
/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ //By BLADEVIL
var
prime, w :array[..] of longint;
flag :array[..] of boolean; procedure make;
var
i, j :longint;
begin
for i:= to do
begin
if not flag[i] then
begin
inc(prime[]);
prime[prime[]]:=i;
w[i]:=w[i-];
if i= then w[i]:=;
end;
for j:= to prime[] do
begin
if prime[j]*i> then break;
w[prime[j]*i]:=w[i]+w[prime[j]];
flag[prime[j]*i]:=true;
if i mod prime[j]= then break;
end;
end;
end; procedure main;
var
i, j, k :longint;
t :longint;
n :longint;
ans :int64;
x, y :longint;
f :boolean;
begin
read(t);
for k:= to t do
begin
read(n);
ans:=; f:=false;
for i:= to n do
begin
read(x,y);
if x= then f:=true;
ans:=ans+int64(w[x])*int64(y);
end;
if not f then ans:=ans+;
writeln(ans);
end;
end; begin
make;
main;
end.
bzoj 2749 杂题的更多相关文章
- BZOJ 2456 杂题 卡内存
2456: mode Time Limit: 1 Sec Memory Limit: 1 MBSubmit: 3702 Solved: 1551[Submit][Status][Discuss] ...
- bzoj 1303 杂题
首先如果一个数是中位数,在这段区间中比他大的数量=比他小的数量,那么如果一个数比他大设为1,比他小设为-1,设要求的数在数组中的位置是mid,那么我们可以用num[i] 表示1-mid这一段中,j-m ...
- 贪心/构造/DP 杂题选做Ⅱ
由于换了台电脑,而我的贪心 & 构造能力依然很拉跨,所以决定再开一个坑( 前传: 贪心/构造/DP 杂题选做 u1s1 我预感还有Ⅲ(欸,这不是我在多项式Ⅱ中说过的原话吗) 24. P5912 ...
- bzoj 前100题计划
bzoj前100题计划 xz布置的巨大的坑.. 有空填题解... 1002 轮状病毒 用python手动matrixtree打表. #include<bits/stdc++.h> #def ...
- 正睿OI DAY3 杂题选讲
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...
- dp杂题(根据个人进度选更)
----19.7.30 今天又开了一个新专题,dp杂题,我依旧按照之前一样,这一个专题更在一起,根据个人进度选更题目; dp就是动态规划,本人认为,动态规划的核心就是dp状态的设立以及dp转移方程的推 ...
- wangkoala杂题总集(根据个人进度选更)
CQOI2014 数三角形 首先一看题,先容斥一波,求出网格内选三个点所有的情况,也就是C(n*m,3);然后抛出行里三点共线的方案数:C(n,3)*m; 同理就有列中三点共线的方案数:n*C(m,3 ...
- 2019暑期金华集训 Day6 杂题选讲
自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...
- Atcoder&CodeForces杂题11.7
Preface 又自己开了场CF/Atcoder杂题,比昨天的稍难,题目也更有趣了 昨晚炉石检验血统果然是非洲人... 希望这是给NOIP2018续点rp吧 A.CF1068C-Colored Roo ...
随机推荐
- windows 无法上网问题解决一例
dhcp获取ip地址,网卡驱动和ip地址获取正常,ping www.baidu.com可以ping通,但是打开浏览器或者qq上网不行,而且系统有提示腾讯管家出错的信息,初步怀疑360和腾讯管家打架导致 ...
- 「暑期训练」「Brute Force」 Money Transfers (CFR353D2C)
题目 分析 这个Rnd353真是神仙题层出不穷啊,大力脑筋急转弯- - 不过问题也在我思维江化上.思考任何一种算法都得有一个“锚点”,就是说最笨的方法怎么办.为什么要这么思考,因为这样思考最符合我们的 ...
- C++学习008-delete与delete[]的差别
对于简单的数据类型,delete与delete[]是没啥差别的,就是等价的 例如 int main() { int *pdata = new int[20]; delete pdata; //dele ...
- 《百词斩·象形9000》第一册(上) 符号Symbol 1
001-upon prep. 在......上面 Wish upon a star.#对着星星许愿. 002-think V. 想,思索,认为:以为,预料 What do you think?#你认为 ...
- lintcode-83-落单的数 II
83-落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级 ...
- 实现AJAX跨域访问方式一
1.添加pom依赖 <dependency> <groupId>com.thetransactioncompany</groupId> <artifactId ...
- BZOJ4513 SDOI2016储能表(数位dp)
如果n.m.k都是2的幂次方,答案非常好统计.于是容易想到数位dp,考虑每一位是否卡限制即可,即设f[i][0/1][0/1][0/1]为第i位是/否卡n.m.k的限制时,之前的位的总贡献:g[i][ ...
- [洛谷P3935]Calculating
题目大意:设把$x$分解质因数的结果为$x=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n}$,令$f(x)=(k_1+1)(k_2+1)\cdots (k_n+1)$,求$\su ...
- [洛谷P1430]序列取数
题目大意:给定一个序列$s$,每个人每轮可以从两端(任选一端)取任意个数的整数,不能不取.在两个人都足够聪明的情况下,求先手的最大得分. 题解:设$f_{i,j}$表示剩下$[i,j]$,先手的最大得 ...
- HTML5用canvas绘制五星红旗
在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶.备受争议的就是"Flash杀手".IT评论界老喜欢用这个词了,杀手无处不在.不管是不是杀手,HTML 5引进 ...