博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AtCoder Regular Contest 064 F - Rotated Palindromes
阅读量:7108 次
发布时间:2019-06-28

本文共 1551 字,大约阅读时间需要 5 分钟。

Problem Statement

Takahashi and Aoki are going to together construct a sequence of integers.

First, Takahashi will provide a sequence of integers a, satisfying all of the following conditions:

  • The length of a is N.
  • Each element in a is an integer between 1 and K, inclusive.
  • a is a palindrome, that is, reversing the order of elements in a will result in the same sequence as the original.

Then, Aoki will perform the following operation an arbitrary number of times:

  • Move the first element in a to the end of a.

How many sequences a can be obtained after this procedure, modulo 109+7?

Constraints

  • 1≤N≤109
  • 1≤K≤109

Input

The input is given from Standard Input in the following format:

N K

Output

Print the number of the sequences a that can be obtained after the procedure, modulo 109+7.


Sample Input 1

Copy
4 2

Sample Output 1

Copy
6

The following six sequences can be obtained:

  • (1,1,1,1)
  • (1,1,2,2)
  • (1,2,2,1)
  • (2,2,1,1)
  • (2,1,1,2)
  • (2,2,2,2)

Sample Input 2

Copy
1 10

Sample Output 2

Copy
10

Sample Input 3

Copy
6 3

Sample Output 3

Copy
75

Sample Input 4

Copy
1000000000 1000000000

Sample Output 4

Copy
875699961

用1-k填序列,序列可以左移n次变为回文

不考虑移位总共有k^(n/2)个回文,所以就是一个容斥问题了

若回文串的最小循环节长度为c,经过c次操作后,得到c个序列

当c为偶数时,重复数为一半,奇数时,无重复 

所以这个问题就解决了,其循环节只可能是其因子

#include 
using namespace std;const int N=2010,MD=1e9+7;int v[N],f[N];int Pow(int x,int y){ int ans=1; for(;y;x=x*1LL*x%MD,y>>=1)if(y&1)ans=1LL*ans*x%MD; return ans;}int main(){ int n,k,tot=0,ans=0,i; cin>>n>>k; for(i=1; i*i

 

 

转载于:https://www.cnblogs.com/BobHuang/p/9607224.html

你可能感兴趣的文章
Unity 5.4版本 Application.systemLanguage 失效
查看>>
webGl中实现clipplane
查看>>
ArcEngine中打开各种数据源(WorkSpace)的连接
查看>>
Java Concurrency In Practice
查看>>
VC++ CArchive及简单的文件操作方法
查看>>
医疗基本知识之医嘱篇(一)医嘱的定义及基本规范
查看>>
D3DXCreateTextureFromFileEx
查看>>
47 个 惊人的 CSS3 动画示例
查看>>
转载 - 微妙的圆角参数 纯CSS圆角Tab
查看>>
hdu1255、1542(线段树求面积的交并)
查看>>
[AX]AX2012 AIF(七):创建.NET程序集变换器
查看>>
在线编程:字符串的完美度
查看>>
Jquery easy UI 上中下三栏布局 分类: ASP.NET ...
查看>>
Calendar计算日期
查看>>
OpenGL ES 3.0之顶点缓冲
查看>>
Android 学习笔记之AndBase框架学习(五) 数据库ORM..注解,数据库对象映射...
查看>>
附加数据库失败,无法升级数据库,因为它是只读的
查看>>
linux内核编程笔记【原创】
查看>>
深入理解Openstack自动化部署
查看>>
在github上创建新分支
查看>>