由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

解析:
考虑所有串减去非本原串。
长度为N的串最多组成 2N2^N2N种情况的串,当串全部为1或为0的时候不是本原串。
再举个例子,6的时候 6可以由三个长度为2的串组成,也可以由长度为3的两个穿组成,那么长度为2的组成方式其实是有四种00 01 10 11因为00 11组成的是全为1的或者,全为0的之前考虑过,所以不重复计算。在考虑长度为3的串,000 001 010 011 100 101 110 111 除了000 111之外还有六种,我们发现恰好为,其本原串的数量。
因此此题公式为:

2N−cal[i]其中i为因子,cal()为长度为i的本原串的数量2^N-cal[i] 其中i为因子,cal()为长度为i的本原串的数量2N−cal[i]其中i为因子,cal()为长度为i的本原串的数量

故可写出代码:

#include <cstring>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
using namespace std;
int m[10000000];
long long  n,ans;
long long  mod_pow(long long  x,long long  n,int mod)
{long long  res=1;while(n){if(n&1)res=res*x%mod;x=x*x%mod;n>>=1;}return res;
}
int cal(long long  n)
{if(m[n]!=0)return m[n];m[n]=mod_pow(2,n,2008)-2; for(int i=2;i*i<=n;i++){if(n%i==0){m[n]=(m[n]-cal(i)+2008)%2008; if(i*i!=n)m[n]=(m[n]-cal(n/i)+2008)%2008;}}return m[n];
}
int main()
{m[0]=0;m[1]=2;m[2]=2;while(scanf("%d",&n)!=EOF){if(n<=2)printf("%d\n",m[n]);else{m[n]=cal(n);printf("%d\n",m[n]);}}
}

数学--数论--HDU 2197 本原串 (推规律)相关推荐

  1. hdu 2197 本原串

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

  2. hdu 2197 本原串 思维

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

  3. 数学--数论--HDU - 6322 打表找规律

    In number theory, Euler's totient function φ(n) counts the positive integers up to a given integer n ...

  4. 数学--数论--HDU 2582 F(N) 暴力打表找规律

    This time I need you to calculate the f(n) . (3<=n<=1000000) f(n)= Gcd(3)+Gcd(4)+-+Gcd(i)+-+Gc ...

  5. 数学--数论--HDU - 6395 Let us define a sequence as below 分段矩阵快速幂

    Your job is simple, for each task, you should output Fn module 109+7. Input The first line has only ...

  6. 数学--数论--Hdu 5793 A Boring Question (打表+逆元)

    There are an equation. ∑0≤k1,k2,⋯km≤n∏1⩽j<m(kj+1kj)%1000000007=? We define that (kj+1kj)=kj+1!kj! ...

  7. HDU 2197 本源串

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

  8. 数学--数论--HDU 12151七夕节 Plus (因子和线性筛)

    Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" ...

  9. 数学--数论-- HDU 2601 An easy problem(约束和)

    Problem Description When Teddy was a child , he was always thinking about some simple math problems ...

最新文章

  1. Spring-Retry重试实现原理
  2. jenkins安装插件一直不动
  3. 全国计算机等级考试题库二级C操作题100套(第46套)
  4. 【C++基础】 类模板
  5. 完美解决Python套接字编程时TCP断包与粘包问题
  6. 疑似Bug:简书安卓10.7首页搜索关键字屏蔽敏感词不彻底
  7. sklearn preprocessing 数据预处理(OneHotEncoder)
  8. 【软考】操作系统计算机网络复习指南
  9. 试题17 方程的解(枚举法)
  10. element tree不刷新视图_架构蓝图软件架构 quot;4+1quot; 视图模型
  11. 网页视频地址批量抓取工具(原创)
  12. 手机屏幕坏了怎么把数据导出来_手机屏幕失灵怎么办 手机屏幕失灵解决办法【详解】...
  13. python 循环语句s =2+22+222+2222之和_python基础2
  14. 「Go工具箱」一个能下载各种视频的开源工具
  15. 中国三四线城市有哪些创业机会?
  16. scrapy---拉勾网Ajax爬虫
  17. 卡西欧计算器说明书获取方法
  18. 红孩儿编辑器的模块设计13
  19. LINUS TORVALDS 语录 TOP 10
  20. 注意力机制详解(Attention详解)

热门文章

  1. mysql 修复错误连接_mysql 无法连接问题的定位和修复过程分享
  2. IOS 6 之后 Required background modes
  3. Swift--变量和常量
  4. Citrix Provisioning Services:Windows 10 VDA计算机的登录性
  5. 阿里如何实现100%容器化镜像化?八年技术演进之路回顾 1
  6. VTK 曲面构建+颜色映射
  7. ITM_win_agentCPU内存占用较高
  8. 如何上传本地图片到PictureBox控件
  9. Incorrect line ending: found carriage return (\r) without corresponding newline (\n)错误的解决方案...
  10. 用正则表达式捕获标识符——随便说