ZOJ 3846 GCD Reduce//水啊水啊水啊水】的更多相关文章

GCD Reduce Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge You are given a sequence {A1, A2, ..., AN}. You task is to change all the element of the sequence to 1 with the following operations (you may need to apply it multiple ti…
GCD Expectation Time Limit: 4 Seconds                                     Memory Limit: 262144 KB                             Edward has a set of n integers {a1, a2,...,an}. He randomly picks a nonempty subset {x1, x2,…,xm} (each nonempty subset has…
给一个集合,大小为n , 求所有子集的gcd 的期望和 . 期望的定义为 这个子集的最大公约数的K次方 : 每个元素被选中的概率是等可能的 即概率 p = (发生的事件数)/(总的事件数); 总的事件数 = 2^n -1; 大小为n的集合的非空子集个数为2^n -1 期望 = p(i) *i; = 1*p(1) + 2*p(2) + ... +n*p(n); 设x发生的事件数为 dp[x] , 则上式可化简为: =1*dp[1]/(2^n-1) + 2*dp[2]/(2^n-1) + ... +…
题意:给你n个正整数a1...an,一次操作是选择任意两个数ai,aj,将它们都替换成gcd(ai,aj).让你在5n步内将所有数变为1.或者输出不可能. 如果所有数的gcd不为1,显然不可能. 否则从a1开始,一路和下一个数取上gcd,一定能在某个时刻,让a1这个数变成1. 然后就好办了,再让a2...an分别与a1取上gcd,就全变成1了. 不超过2n步. #include<cstdio> #include<algorithm> using namespace std; int…
Description Edward has a set of n integers {a1, a2,...,an}. He randomly picks a nonempty subset {x1, x2,…,xm} (each nonempty subset has equal probability to be picked), and would like to know the expectation of [gcd(x1, x2,…,xm)]k. Note that gcd(x1, …
GCD Expectation Time Limit: 4 Seconds     Memory Limit: 262144 KB Edward has a set of n integers {a1,a2,...,an}. He randomly picks a nonempty subset {x1,x2,-,xm} (each nonempty subset has equal probability to be picked), and would like to know the ex…
题意:求n个数组成的集合的所有非空子集的gcd的期望 大致思路:对于一个数x,设以x为约数的数的个数为cnt[x],所组成的非空集合个数有2^cnt[x]-1个,这其中有一些集合的gcd是x的倍数的,怎么求得最终结果呢?下面来说明过程. 令f[x] = 2^cnt[x]-1,表示以x为gcd的集合个数.令maxn为所有数的最大值,一开始f[maxn]=2^cnt[maxn]-1是肯定正确的.若从大到小更新f数组,类似数学归纳法,f[x]需要减去f[2x].f[3x].....f[px],px<=…
//TODO public class demo { public static void main(String[] args) { demo.ss(); demo.sss(); } public static int ss(){ int f = 5; int s =3; while (f != 4){ if(f>=s){ f = f-s; if(f == 4){ System.out.println("fffff=="+f); return f; } }else{ s =s-…
啦啦啦,水一发准备去复习功课~ ------------------------------------------水一发的分割线------------------------------------------ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1514 水题,没有一次AC我很惭愧,竟然忘了输出总共的个数..... #include<cstdio> #include<cstring> const…
Reduce to One 这题其实蛮水的? 题意就是说: 给定一个 1~n 的序列,每次挑两个数 x y 合并,合并值为 \(x+y+xy\) ,然后求不断合并最后剩下的一个的最大值 随便搞搞发现答案应该是无论怎么合并都一样的,所以从左到右合并就好了,加上是第一题,大概就是这个结论 于是前缀信息处理一下每次直接输出就好了... //by Judge #include<bits/stdc++.h> #define Rg register #define fp(i,a,b) for(Rg int…