XDOJ-1022-A simple math problem 2(递推)

来源:互联网 发布:胜通软件 编辑:程序博客网 时间:2024/06/05 03:05

题目链接:XDOJ-1022-A simple math problem 2

递推搞一搞~
f(i) 为f数组的前缀和,那么很容易得到第一个递推。
第二个递推求出 f(i)
第三个递推求出 f(i) 的前缀和。
然后就行了。

#include<bits/stdc++.h>using namespace std;const int mod=1007;const int maxn=1e6+7;int f[maxn],l,r;int main(){    for(int i=1;i<maxn;i++)    {        for(int j=i;j<maxn;j+=i)            ++f[j];    }    for(int i=2;i<maxn;i++)        f[i]=(f[i-1]+f[i])%mod;    for(int i=2;i<maxn;i++)        f[i]=(f[i-1]+f[i])%mod;    f[0]=0;    while(~scanf("%d%d",&l,&r))        printf("%d\n",(f[r]-f[l-1]+mod)%mod);    return 0;}
0 0
原创粉丝点击