湖南多校对抗赛3.28 J - Jerry's trouble

Problem J: Jerry‘s trouble

Time Limit: 10 Sec  Memory Limit: 256 MB

Submit: 96  Solved: 46

[Submit][Status][Web
Board
]

Description

Jerry is caught by Tom. He was penned up in one room with a door, which only can be opened by its code. The code is the answer of the sum of the sequence of number written on the door. The type
of the sequence of number is

But Jerry’s mathematics is poor, help him to escape from the room.

Input

There are some cases (about 500). For each case, there are two integer numbers n, m describe as above ( 1 <= n < 1 000 000, 1 <= m < 1000).

Output

For each case, you program will output the answer of the sum of the sequence of number (mod 1e9+7).

Sample Input

4 1
5 1
4 2
5 2
4 3

Sample Output

10
15
30
55
100

HINT

题意:给你一个n和一个m,求1-n每个数的m次方的和;

简单的快速矩阵幂,但是因为没有看清题目要求,输入输出都写成了I64d导致一直PE,改成lld就AC了。

代码如下:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
long long int q=1e9+7;
long long int mix(long long int a, long long int m)
{
	if(m==0) return 1;
	long long int sum=1;
	while(m)
	{
		if(m%2)
			sum=(sum*a) % q;
		a=(a*a)%q;
		m/=2;
	}
	return sum;
}

int main()
{
	long long int n=0, m=0;
	while(scanf("%lld%I64d", &n, &m)!=EOF)
	{
		long long int ans=0;
		for(int i=1; i<=n; i++)
		{
			ans=(ans+mix(i,m))% q;
		}
		printf("%lld\n", ans);
	}
	return 0;
}

湖南多校对抗赛3.28 J - Jerry's trouble

时间: 2024-08-09 21:59:25

湖南多校对抗赛3.28 J - Jerry's trouble的相关文章

湖南多校对抗赛(2015.03.28) E Longest Increasing Subsequence Again

题意:给你一个序列,问你删除掉连续的一段,使得剩下的序列的最长上升字串最大,问你这个最大值. 解题思路:分段dp,  dp[i][0] ,dp[i][1]   , 0表示前面没有切过,只能从前一个数的0状态得到,1状态表示前面已经切过了,能从前一个的1状态得到,也能从 在他前面的比他值小的dp[j][0](j < i && a[j] < a[i])的最大值得到,这里用线段树维护就行了. 解题代码: 1 // File Name: b.cpp 2 // Author: darkd

湖南多校对抗赛(2015.03.28) G Good subsequence

题意:找到一个序列中极值<=k的最长字串的长度. 解题思路:set容器双递推. 解题代码: 1 // File Name: g.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月28日 星期六 12时04分39秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque>

湖南多校对抗赛(2015.03.28)CSU1547~1536 题解

比赛链接:点击打开链接 A:点击打开链接 题意: 有2种矩阵1*x和2*x, 用最小的矩阵2*m来把这些框住,使得m最小,输出最小的m 输入: n个矩阵 下面n行给出wi, xi, wi的取值只有1,2两种,且矩阵不能旋转重叠. 思路: 矩阵宽为2就直接加到答案上,所以只考虑矩阵宽为1. dp[i]表示第一行能放的宽度,类似背包求出这个dp 然后if(dp[i] is ok) ans = min(ans, max(sum-i, i) ); #include <iostream> #includ

湖南多校对抗赛(2015.03.28) A Rectangle

题意:给你一些最多宽为2 的木板,让你放在一个宽为二的盒子里面,问你这个盒子最短有多长. 解题思路:DP,离中间最近的那个值. 解题代码: 1 // File Name: a.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月28日 星期六 12时13分56秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9

湖南多校对抗赛(2015.03.28) B Design road

题意:给你起点(0,0),终点(x,y),中间有很多条河, 在河上面建桥花费c1,在陆地建路花费c2,问你最小花费是多少. 解题思路:我们知道,我们考虑的时候完全可以把河都移动到一边来求,这样只需要三分就行了. 解题代码: 1 // File Name: b.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月28日 星期六 13时26分39秒 4 5 #include<vector> 6 #include<list> 7 #

湖南多校对抗赛(2015.03.28) H SG Value

题意:给你一个集合,动态插入 ,动态询问,然后问你这个集合的sg值(这个集合用加法运算不能产生的那个最小正整数)是多少. 解题思路:假设我们现在的这个SG值是 x 1)现在插入集合里面一个数v   如果这个v > x ,那么显然  sg值x不变,  把v放进从小到大的优先队列中 2)如果这个 v <= x 那么sg值x肯定就会变成  x + v, 每更新一次 sg值,就去看优先队列top元素是否是 小于等于 x的 ,如果小于等于,其实就等于把这个top元素进行1操作,这样就不会错了. 解题代码

湖南多校对抗赛(2015.03.28) I Inversion Sequence

题意:给你一个序列a[i],代表 i这个数 在b数列中有多少个值在它前面且比它大,问你求B序列 解题思路:线段树的简单应用,找第几个空,类似二分. 解题代码: 1 // File Name: i.cpp 2 // Author: darkdream 3 // Created Time: 2015年03月28日 星期六 12时56分11秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<

湖南多校对抗赛(2015.05.10)(国防科大学校赛决赛-Semilive)CSU1609-1618

简单地写个题解,毕竟总个结很重要.但是由于题目水 + 不会写题解,路过的大牛莫喷... 题A 题意:给你两个序列a和b,有一种操作,对于一个数(非头尾)v,左边加上v,右边加上v,自己变成-v,然后问a操作无数次可不可以变成b? 题解:这题我学会了一个分析题目的方法:从目标逆着推.对于两个一样的序列,如下 操作前:……(i - 1) (i) (i + 1) …… 操作后:……(i - 1) + (i) (i) - (i) - (i) (i + 1) + (i)…… 定义si为前i项的和,假设原序

湖南多校对抗赛(2015.05.24)部分解题报告(CSU1628-1638)

比赛网址 A:简单题 AC代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<queue> #include<algorithm> using namespace std; int a[105]; int main() { #ifndef ONLINE_JUDGE freope