描述
由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串?
答案mod2008.
例如,100100不是本原串,因为他是由两个100组成,而1101是本原串。

Input
输入包括多个数据,每个数据一行,包括一个整数n,代表串的长度。

Output
对于每个测试数据,输出一行,代表有多少个符合要求本原串,答案mod2008.

Sample Input

1
2
3
4

Sample Output

2
2
6
12

思路
每个位置都可以为0或者为1,所以一共有2^n 种方案组成这个串.有循环节的话,假设循环节长度为k,则必然有k∣n,即找到n的全部因子,每个因子代表一个循环节的长度。每个长度为k的循环节,又有2^k种情况,减去全为1和全为0的情况就是非本原串的个数。
用2^n-2减去这个数值就是本原串的数量。
递归求解。

AC代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;const int mod = 2008;
map<int,ll> f;ll qmi(ll m, ll k, ll p)
{ll res = 1 % p, t = m;while (k){if (k&1) res = res * t % p;t = t * t % p;k >>= 1;}return res;
}ll cal(int n)
{if(f.count(n))return f[n];f[n]=(qmi(2LL,(ll)n,mod)-2+mod)%mod;for(int i=2;i*i<=n; i++){if(n%i==0){f[n]=(f[n]-cal(i)+ mod)%mod;//找到一个因子if(i*i!=n)f[n]=(f[n]-cal(n/i)+mod)%mod;//也就找到了另一个}}return f[n];
}int main()
{int n;f[0] = 0;f[1] = 2;f[2] = 2;while(~scanf("%d",&n)){if(n <= 2)printf("%lld\n",f[n]);elseprintf("%lld\n",cal(n));}return 0;
}

HDU 2197:本原串相关推荐

  1. 数学--数论--HDU 2197 本原串 (推规律)

    由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串? 答案mod2008. 例如,100100不是本原串,因为他是由两个 ...

  2. hdu 2197 本原串

    Problem Description 由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串? 答案mod2008. 例如 ...

  3. hdu 2197 本原串 思维

    题目链接 思路: 这个题目的话我们可以从反面来考虑,题目要求我们求出本源串,那么非本源串的很好求,而且对于n位的二进制,一共有2^n种,假设当前长度为n,那么那些非本源串,可以拆成长度为x的串组成n, ...

  4. HDU 2197 本源串

    如果一个串能完全由其子串组成,那么这个串就不是本源串 求长度为n的本源串的个数. 由定义一个串如果不是本源串,那么他的长度一定是组成其子本源串的长度的(>=1) 整数倍. 那么长度为n的串总个数 ...

  5. 本原串(数论,快速幂)

    由0和1组成的串中,不能表示为由几个相同的较小的串连接成的串,称为本原串,有多少个长为n(n<=100000000)的本原串? 答案mod2008. 例如,100100不是本原串,因为他是由两个 ...

  6. hdu 4545 魔法串 2013金山西山居创意游戏程序挑战赛——初赛(1)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4545 这题太坑了,小明的串可以任意删掉某个字符 这句话不知道大家是怎么理解的,我觉得应该是能够删除其中 ...

  7. HDU 1261 字串数

    字串数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  8. HDU 4545-魔法串

    魔法串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submis ...

  9. hdu 1261 字串数

    指数型母函数应用!!! import java.math.*; import java.util.*; public class Main {     public static int []a;   ...

最新文章

  1. 给url添加时间戳,解决浏览器缓存
  2. 爱立信:用什么保持全球老大的地位?
  3. 【Android工具】安卓魔力播放器moliplayer绿色无广告,手机DLNA播放器
  4. 斯坦福CS229机器学习课程的数学基础(线性代数)翻译完成
  5. 《非暴力沟通》听书心得
  6. 线性代数拾遗(五):矩阵变换的应用
  7. 史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)
  8. linux gdb 脚本,如何写gdb命令脚本
  9. 5-Java多态性理解
  10. 【华为云技术分享】《跟唐老师学习云网络》 - Tcpdump大杀器抓包
  11. Linux中fasttext安装
  12. 号称是世界最大的电子书图书馆ZLibrary
  13. Kali系统2022VM版本的安装
  14. python快速搭建服务器方法
  15. Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目
  16. jstl和el表达式
  17. 一小心删除了系统文件NTDETECT.COM怎么办
  18. 视频编码器接入指挥调度平台的一种可行方法
  19. 分析PS中的3D功能
  20. 1、大道至简的数据处理工具-(Microsoft Power Query入门)

热门文章

  1. 阿里云服务器宽带多少合适?宽带选择方法及5M宽带注意事项
  2. 如何使用CorelDRAW 2019快速制作幻影图像效果
  3. zookeeper挂掉了dubbo还能继续使用吗?
  4. 前端学习 Vue笔记 完整版
  5. 20135203齐岳 信息安全系统设计基础期末总结
  6. VS2017搭建linux开发环境
  7. 生产者消费者问题:管程法
  8. Vue3核心源码解析第十一课 AST生成代码
  9. matlab约当消去法,Gauss-Jordan 高斯约当消去法
  10. mac python环境搭建