//其实题目中f[n]的值可理解为存在多少个整数对使a*b<=n
#include<cstdio>
#define N 1007
#define maxn 1000005
using namespace std;
int f[maxn];
void Procede(int n)//预处理
{
for(int i=;i<maxn;i++){
for(int j=i;j<maxn;j+=i){
f[j]++;
}
}
//此时f[n]理解为表示n的约数的个数,亦可以理解为表示存在多少对整数对(a,b)恰好满足a*b=n f[1]=1,f[2]=2,f[3]=2,f[8]=4,f[10]=3
for(int j=;j<maxn;j++){
f[j]=(f[j-]+f[j])%N;
}//f[n]此时表示存在多少对整数对(a,b)满足a*b<=n,即求了一次前缀和,f[1]=1,f[2]=3,f[3]=5
for(int j=;j<maxn;j++){
f[j]=(f[j-]+f[j])%N;
}
}//此时f[n]表示题目中的sum(1,n),即又求了一次前缀和,f[1]=1,f[2]4,f[3]=9
int main()
{
int a,b;
Procede(maxn);
while(scanf("%d%d",&a,&b)!=EOF)
{
int ans=(f[b]-f[a-]+N)%N;
printf("%d\n",ans);
}
}

这是别人的诗,下面是我的辣鸡代码

#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e6+;
const int mod=;
int p[N];
int dp[N];
int sum[N];
int main ()
{
for (int i=;i<=N;i++) {
if (!p[i]) p[++p[]]=i;
for (int j=;j<=p[]&&i*p[j]<=N;j++) {
p[i*p[j]]=;
if (i%p[j]==) break;
}
} /* 筛选出素数*/
dp[]=;
sum[]=;
int x;
for (int u=;u<=;u++) {
x=u;
int i=;
int ans=;
while (p[i]*p[i]<=x) {
if (x%p[i]==) {
int k=;
while (x%p[i]==) {k++;x=x/p[i];}
ans=ans*(k+);
}
i++;
}
if (x!=) ans=*ans;
dp[u]=(dp[u-]+ans)%mod;/* 30 与 29增加多少呢,因为30可以分解为2*3*5三个质因数所以增加3个*/
sum[u]=(sum[u-]+dp[u])%mod;
}
int a,b;
while (~scanf ("%d %d",&a,&b)) {
printf ("%d\n",(sum[b]-sum[a-]+mod)%mod);
}
return ;
}

数学真是有意思。。。脑子不够用。。。。。。

xdoj-1022-A simple math problem 2 // 太强了的更多相关文章

  1. FZYZ-2071 A Simple Math Problem IX

    P2071 -- A Simple Math Problem IX 时间限制:1000MS      内存限制:262144KB 状态:Accepted      标签:    数学问题-博弈论    ...

  2. hdu 1757 A Simple Math Problem (乘法矩阵)

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. HDU1757 A Simple Math Problem 矩阵快速幂

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  4. hdu------(1757)A Simple Math Problem(简单矩阵快速幂)

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. A Simple Math Problem(矩阵快速幂)(寒假闭关第一题,有点曲折啊)

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...

  6. HDU 1757 A Simple Math Problem (矩阵快速幂)

    题目 A Simple Math Problem 解析 矩阵快速幂模板题 构造矩阵 \[\begin{bmatrix}a_0&a_1&a_2&a_3&a_4&a ...

  7. HDU 1757 A Simple Math Problem(矩阵)

    A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ...

  8. HDU 1757 A Simple Math Problem (矩阵乘法)

    A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  9. hdu 5974 A Simple Math Problem

    A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

随机推荐

  1. Oracle常用表和常见操作命令

    一.说明 Oracle数据库数据库名.表名.字段名等不区分大小写,字段值区分大小写. Oracle单词之间一般用下划线连接:表名最后一般加s字段名最后一般没s. 二.常见数据表 dba_*DBA拥有的 ...

  2. mysql查看和修改密码策略

    8.X版本: #查看密码策略 show variables like '%validate_password.policy%'; show variables like '%validate_pass ...

  3. xshellDoc_1base

    1◆ 到根目录 cd /     2◆ 创建文件夹 mkdir test   3◆ 到目录 cd /root/test/~~   4◆修改文件名 mv test testbak   5◆ 查看 ls ...

  4. JQuery对象和DOM对象的区别与转换

    刚开始学习JQuery,经常分不清楚哪些是JQuery对象,哪些是DOM对象,了解它们之间的关系是很有必要的. 1.DOM对象和JQuery对象的区别 1)  DOM对象 DOM是Document O ...

  5. learning ddr mode register MR0

  6. 随机生成id

    function getRandom(){ return Math.random().toString(36).substring(7);}

  7. vue-router-8-路由组件传参

    在组件中使用$route会使之与其对应路由形成高度耦合,使用props解耦 const User = { props: ['id'], template: '<div>User{{ id ...

  8. 《Python》进程之间的通信(IPC)、进程之间的数据共享、进程池

    一.进程间通信---队列和管道(multiprocess.Queue.multiprocess.Pipe) 进程间通信:IPC(inter-Process Communication) 1.队列 概念 ...

  9. Android : VLC for Android 环境搭建及编译

    一.下载VLC源码: git clone https://code.videolan.org/videolan/vlc-android.git 编译apk:   sh compile.sh -a ar ...

  10. 4.4 C++虚析构函数

    参考:http://www.weixueyuan.net/view/6373.html 总结: 构造函数是不能声明为虚函数的,析构函数可以被声明为虚函数. 将基类的析构函数声明为虚函数之后,派生类的析 ...