hdu1061】的更多相关文章

hdu1011 和 hdu1561类似,给定每个节点的花费以及价值,并且子节点必须在父亲节点取到以后才可以被取到 相当于是在树上进行的01背包 dp时考虑每一个子树 root和它的每一个儿子,状态转移方程为 dp[root][j]=max(dp[root][j],dp[root][j-k]+dp[ son[p] ][ k ]) 以下为ac代码 hdu1011:这题有一个小坑,最后必须要剩余至少一个人..开始没考虑到,一直wa #include<stdio.h> #include<iost…
1.快速幂 原理:求a的b次方,将b转化为二进制数,该二进制位第i位的权是2^(i-1), 例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹¹转化为算   实现: 快速幂可以用位运算来实现 b and 1{也就是取b的二进制最低位(即第0位) 判断b是否为奇数,是则为1} b shr 1{就是去掉b的二进制最低位(即第0位)} C++实现为 b & 1//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶 b&g…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061 思路:快速幂 #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long LL; const int MOD = 1e5; LL f(LL a,LL b) { LL res=; ) { ==) res=res*a%MOD; a=a*a%MOD;…
#include <iostream>#include <cstdio>using namespace std;int mod_exp(int a, int b, int c) //快速幂取余a^b%c{ int res, t; res = 1 % c; t = a % c; while (b) { if (b & 1) { res = res * t % c; } t = t * t % c; b >>= 1; } return res;}int main()…
简单的找规律,不妨设N=10*x+a(a=N%10),那么N^N=(10*x+a)^N,用二项式展开定理可以知道N^N%10=a^N%10; 由于0<a<10,打表a^1,a^2,a^3,a^4……无论a是那个数,a^N%10最多周期为4 ; #include<iostream> using namespace std; int main() { int n, a, T; cin >> T;  int p[4]; while (T--) { cin >> n…
Given a positive integer N, you should output the most right digit of N^N. Input The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.  Each test case contains…
POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 POJ1016 POJ1017 POJ1169 POJ1298 POJ1326 POJ1350 POJ1363 POJ1676 POJ1786 POJ1791 POJ1835 POJ1970 POJ2317 POJ2325 POJ2390 POJ1012 POJ1082 POJ1099 POJ1114…
链接:传送门 题意:求 N^N 的个位 思路:快速幂水题 /************************************************************************* > File Name: hdu1061.cpp > Author: WArobot > Blog: http://www.cnblogs.com/WArobot/ > Created Time: 2017年05月17日 星期三 22时50分05秒 **************…