hdu 2197 本原串 找规律+快速幂+映射
来源:互联网 发布:汉文化复兴 知乎 编辑:程序博客网 时间:2024/05/17 01:29
题目链接
F[n]=2^n-ΣF[i]-2;(其中,i是n的约数)
F[n]是最后的结果
按照公式直接求解就好了,今天学到了新的一招 用map来存储已经查询过的记录
下面附上题目代码
#include<stdio.h>#include<iostream>#include<string.h>#include<math.h>#include<map>using namespace std;map<int,int>mp;const int MOD=2008;int fun(int a,int n){ //a的n次方 if(n==1)return a; int num=fun(a,n/2); num=num*num%MOD; if(n%2==1)num=num*a%MOD; return (num+MOD)%MOD; }int cal(int n){ 计算长度为n的本原串的个数 if(mp[n]!=0)return mp[n]; mp[n]=fun(2,n)-2; for(int i=2;i*i<=n;i++){ if(n%i==0){ mp[n]=(mp[n]-cal(i)+MOD)%MOD; if(i*i!=n)mp[n]=(mp[n]-cal(n/i)+MOD)%MOD; } } return mp[n]; //用map来存储}int main(){ int n; while(scanf("%d",&n)!=EOF){ mp[0]=0; mp[1]=2; mp[2]=2; if(n<=2){cout<<mp[n]<<endl;continue;} int ans=cal(n); cout<<ans<<endl; } return 0;}
竟然发现 用 10000000的数组可以过掉。。。。。
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>const int L=100000010;int a[100000010]={0};using namespace std;int fun(int n){ if(n==1)return 2; int num=fun(n/2); if(n%2==1)return num=num*num*2%2008; else return num*num%2008;}int cal(int n){ if(a[n]!=0)return a[n]; int ans=fun(n)-2; int edge=(int)sqrt(n); for(int i=2;i*i<=n;i++){ if(n%i==0){ if(i*i==n)ans=(ans-cal(i)+2008)%2008; else { ans=(ans-cal(i)+2008)%2008; ans=(ans-cal(n/i)+2008)%2008; } } } return ans;}int main(){ int n; while(scanf("%d",&n)!=EOF){ a[1]=2; a[2]=2; if(a[n]!=0)printf("%d\n",a[n]); else { a[n]=cal(n); printf("%d\n",a[n]); } } return 0; }
- hdu 2197 本原串 找规律+快速幂+映射
- HDU 2197 本原串 (规律+快速幂)
- hdu 2197 本原串 (快速幂)
- HDU 本原串 (快速幂)
- hdu 2197 本原串(数论+快速幂)
- hdu 2197 【本原串】
- HDU - 2197 本原串
- HDU 2197本原串
- 【HDU】 2197 本原串
- hdu 2197 本原串
- hdu-2197-本原串
- hdu 4506(快速幂+找规律)
- hdu 6172 矩阵快速幂 找规律
- hdu 2197 本原串(递推,快速幂取模)
- hdu 2197 本原串 思维
- HDU 4990 Reading comprehension(找规律+矩阵快速幂)
- HDU 4990 Reading comprehension (找规律+矩阵快速幂)
- hdu 3519 快速幂矩阵(7)+找规律
- C++类中的常数据成员和静态数据成员的区别
- Android显示图片避免OOM和ANR小结
- 编程之路,给自己一个方法,一个提醒
- Installing GRUB on a Hard Disk Image File
- Exchange 2010灾备站点激活!
- hdu 2197 本原串 找规律+快速幂+映射
- UVA 11584 Partitioning by Palindromes 动态规划 入门
- hdu 4747 Mex
- android中加载图片时出现oom
- va_start和va_end使用详解
- 开启IOS7新时代
- hdu_2063 过山车 匈牙利算法的bfs写法
- 将4字节数据二进制模式中001替换为011
- 解决EMF DanglingHREFException的问题