UVa 766 Sum of powers (伯努利数)】的更多相关文章

题意: 求 ,要求M尽量小. 析:这其实就是一个伯努利数,伯努利数公式如下: 伯努利数满足条件B0 = 1,并且 也有 几乎就是本题,然后只要把 n 换成 n-1,然后后面就一样了,然后最后再加上一个即可. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #inclu…
题目链接: http://poj.org/problem?id=1707 Language: Default Sum of powers Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 735   Accepted: 354 Description A young schoolboy would like to calculate the sum   for some fixed natural k and differe…
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够是负数,负数的情况比較特殊,p仅仅能为奇数.这时候是要把答案不断除2除到为奇数就可以. 代码: #include <stdio.h> #include <string.h> #include <math.h> long long n; int prime[333333],…
[CSAcademy]Sum of Powers 题目大意: 给定\(n,m,k(n,m,k\le4096)\).一个无序可重集\(A\)为合法的,当且仅当\(|A|=m\)且\(\sum A_i=n\).定义一个集合的贡献为\(\sum A_i^k\),求所有满足条件的集合的贡献之和. 思路: \(f[i][j]\)表示将\(j\)个数之和为\(i\)的方案数,有如下两种转移: \(f[i][j]+=f[i-1][j-1]\),表示新加入一个元素\(1\): \(f[i][j]+=f[i-j]…
转帖:Euler's Sum of Powers Conjecture 存不存在四个大于1的整数的五次幂恰好是另一个整数的五次幂? 暴搜:O(n^4) 用dictionary:O(n^3) import itertools def euler(m): """Yield tuples (a, b, c, d, e) such that a^5 + b^5 + c^5 + d^5 = e^5, where all are integers, and 1 < a ≤ b ≤…
Description A young schoolboy would like to calculate the sum for some fixed natural k and different natural n. He observed that calculating ik for all i (1<=i<=n) and summing up results is a too slow way to do it, because the number of required ari…
自然数幂和: (1) 伯努利数的递推式: B0 = 1 (要满足(1)式,求出Bn后将B1改为1 /2) 参考:https://en.wikipedia.org/wiki/Bernoulli_number http://blog.csdn.net/acdreamers/article/details/38929067 使用分数类,代入求解 #include<cstdio> #include<iostream> #include<cstdlib> #include<…
题目链接:http://poj.org/problem?id=1707 题意:给出n 在M为正整数且尽量小的前提下,使得n的系数均为整数. 思路: i64 Gcd(i64 x,i64 y) { if(y==0) return x; return Gcd(y,x%y); } i64 Lcm(i64 x,i64 y) { x=x/Gcd(x,y)*y; if(x<0) x=-x; return x; } struct fraction { i64 a,b; fraction() {} fractio…
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2852 题意:找到在[1,2^64-1]区间范围内的所有Super Powers数,Super Powers数指的是可以写成另外两个正数的次幂: 例如:1=1^1,1=1^20;   64=8^2,64=4^4; 思路:1另外算,从2开始,他的指数如果不是素数,由于算数基本定理,…
https://vjudge.net/problem/UVA-10622 将n分解质因数,指数的gcd就是答案 如果n是负数,将答案除2至奇数 原理:(a*b)^p=a^p*b^p #include<cmath> #include<cstdio> #include<algorithm> #define N 65550 using namespace std; int gcd(int a,int b) { return !b ? a : gcd(b,a%b); } int…
https://vjudge.net/problem/UVA-10891 题意: 有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取.每次玩家只能从左端或者右端取任意数量个数,但不能两端都取.所有数都被取走后游戏结束,然后统计每个人取走的所有数之和,作为各自的得分.两个人采取的策略都是让自己的得分尽量高,并且两个人都足够聪明,求A的得分减去B的得分后的结果. 思路: 不管是轮到谁取数,都是在一个序列中从左边或右边开始取最大值. 那么我们就令d[i][j]表示先手在[i~j]序列中所能取到…
https://vjudge.net/problem/UVA-1210 统计质数前缀和,枚举左右端点,这一段的区间和+1 #include<cstdio> #define N 10001 using namespace std; int cnt,p[N],sum[N],ans[N]; bool v[N]; int main() { ;i<N;i++) { if(!v[i]) { v[i]=true; p[++cnt]=i; } ;j<=cnt;j++) { if(i*p[j]>…
刚看到这个题目不知道怎么个DP法,有点难想到 解法如下 设置dp[i][j]代表i到j这段子序列能获得的最大值,这样,枚举m=min(m,dp[i+1到j][j],dp[i][i到j-1]),m就代表了给另一个人的,就可求得就只能取到 dp[i][j]-sum(i,j)-m,这样,sum为该段序列总和,只需简单的数列前缀和即可求得sum,这样,只需枚举m值,不断向下进行记忆化搜索,即可求得终结果. #include <iostream> #include <cstdio> #inc…
这个题   任意一个数,他的幂只要不是质数则可以分解成两个数的乘   判断有没有溺出  i×i  则用最大的那个数 Max/i < i 吗 #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<stdio.h> #include<set> using namespace std; typedef unsigned lon…
请看这个说明http://blog.csdn.net/u014800748/article/details/45914353 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<set> #include<vector> #include<queue> #include<cstdlib> #include<cstdio&g…
题意: 考虑所有的可重集{a1,a2,a3....ak} 满足a1+a2+....+ak=n,求所有a1^m+a2^m+a3^m的和 n,m,k<=5000 题解: part1: 考虑f[i][j]表示前i个,总和为j 决策有两种1 1.之前的都加1 2.插入一个1 然后对于之前的都加一说是用斯特林数还原..以后再学.. part2: 满分做法..挺简单的 考虑单独的贡献 枚举每个出现的次数,然后乘以组合数就可以了…
题意:选择k(k<15)个唯一质数,求出和为n(n<1121)的可能数 题解:预处理dp,dp[k][n]表示使用k个素数拼成n的总方案数 就是三重枚举,枚举k,枚举n,枚举小于n的素数 但是注意三重循环的顺序与位置,我们要防重防漏 第一重循环是枚举每个小于n的素数,思路是对于每个素数放入dp里面的位置 第二重倒叙枚举每个数n,倒序是类似01背包不能让枚举的素数重复加入同一个dp数组中 第三重正序枚举个数k只能放在最里面,这样才不会出现重复 import java.util.Scanner;…
https://vjudge.net/problem/UVA-1213 dp[i][j][k] 前i个质数里选j个和为k的方案数 枚举第i个选不选转移 #include<cstdio> #define N 1121 using namespace std; ][][N]; bool v[N]; int main() { ;i<N;i++) { if(!v[i]) { v[i]=true; p[++cnt]=i; } ;j<=cnt;j++) { if(i*p[j]>=N) b…
题意:找出1~2^64-1中 能写成至少两个数的幂形式的数,再按顺序输出 分析:只有幂是合数的数才是符合要求的.而幂不会超过64,预处理出64以内的合数. 因为最小的合数是4,所以枚举的上限是2的16次方.对其中的每个数以4为幂的枚举下限,并根据合数表递增.而递增的上界是一个数所能达到的最大幂次.可以根据公式:x = logi(2^64-1) = log(2^64-1) / log(i) 得到. #include<bits/stdc++.h> using namespace std; ; ty…
类似一个背包问题的计数问题.(虽然我也不记得这叫什么背包了 一开始我想的状态定义是:f[n = 和为n][k 个素数]. 递推式呼之欲出: f[n][k] = sigma f[n-pi][k-1]. 但是题目还有一个要求是不同素数之和,为了保证素数不同,那就先枚举素数吧, f[i][n][k] = sigma  f[i-1][n-p][k-1], 然后滚动数组降掉一维就好了. 本地筛一遍发现maxn 范围内素数数量是pi_n = 187. maxn*maxk*pi_n ≍ 1e6. 复杂度也是没…
题目链接:https://vjudge.net/problem/UVA-11752 题解: 1.首先变量必须用unsig long long定义. 2.可以分析得到,当指数为合数的时候,该值合法. 3.由于最大值为(2^64)-1,而最小的合数为4, 所以底数最大都不超过(2^16).且指数最大不超过64. 那么就可以: 枚举底数,然后计算出在最大值范围内,可以取到的最大指数.当最大指数小于4时,可以退出循环了. 然后枚举指数,从4开始,当指数为合数时,该值合法. 4.时间复杂度:O((2^16…
题目链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=111527#problem/Z 题意: 我们称一个可以由至少两个不同正整数的幂的形式表示的数为超级幂.让你找出1到264−1之间的所有超级幂. 分析: 首先ax∗y=axy,也就是说超级幂必须存在一个为合数的指数. 底数最小为2,此时指数最大为64. 指数最小为4,此时底数最小为216. 暴力枚举一发即可. 因为ull的最大值为264−1,所以乘的过程中注意判断是否大于边界.…
题意:给定两个数 n 和 k,问你用 k 个不同的质数组成 n,有多少方法. 析:dp[i][j] 表示 n 由 j 个不同的质数组成,然后先打表素数,然后就easy了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #…
题目:给你一个数字问将他写成连续的数字的和的形式.有几种写法. 分析:数论. 设拆成的序列个数为k,我们分两种情况讨论: 1.拆成奇数个连续数.那么设中位数是a,则有n = k * a: 2.拆成偶数个连续数,那么设中位数是a与a+1,则有n = k / 2 *(a+a+1). 综上所述,本问题就是将n拆成2个数的乘积的形式,且当中一个一定为奇数: 问题转化成求解n中奇数因子的个数.这里求出全部的奇素因子计算组合数就可以. 说明:实际的数据规模没有题面上那么大╮(╯▽╰)╭. #include…
题目:https://cn.vjudge.net/problem/UVA-11752 题解:这里只讨论处理越界的问题. 因为题目最上界是 264-1. 我们又是求次幂的. 所以当我们就可以知道 i 的时候的界限 limit = 264-1 / i.如果刚好前一个次幂是 limit,那么再乘一个 i 刚好等于 264-1,按照题意是符合的. 那么如果当前的 次幂 a 是大于 limit 的话,a*i 就一定越界(可以自己想一想为什么),这个时候就可以break了. 这一题用set 保存,因为set…
题意:选择k个质数,使它们的和等于n,问有多少种方案. 分析:dp[i][j],选择j个质数,使它们的和等于i的方法数. #pragma comment(linker, "/STACK:102400000, 102400000") #include<cstdio> #include<cstring> #include<cstdlib> #include<cctype> #include<cmath> #include<i…
1.LA 5694 Adding New Machine 关键词:数据结构,线段树,扫描线(FIFO) #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <queue> #include <map> #include <set> #include <ctime> #include <cm…
        ID Origin Title   111 / 423 Problem A LightOJ 1370 Bi-shoe and Phi-shoe   21 / 74 Problem B LightOJ 1356 Prime Independence   61 / 332 Problem C LightOJ 1341 Aladdin and the Flying Carpet   54 / 82 Problem D LightOJ 1336 Sigma Function   66 /…
KUANGBIN带你飞 全专题整理 https://www.cnblogs.com/slzk/articles/7402292.html 专题一 简单搜索 POJ 1321 棋盘问题    //2019.3.18 POJ 2251 Dungeon Master POJ 3278 Catch That Cow  //4.8 POJ 3279 Fliptile POJ 1426 Find The Multiple  //4.8 POJ 3126 Prime Path POJ 3087 Shuffle…
模版整理: 晒素数 void init() { cas = ; ; i < MAXD ; i++) is_prime[i] = true; is_prime[] = is_prime[] = false; ; i < MAXD ; i++) { if (is_prime[i]) { prime[cas++] = i; for (int j = i + i ; j < MAXD ; j += i) is_prime[j] = false; } } } 合数分解 int x = src[i]…