xdoj-1022-A simple math problem 2 // 太强了
//其实题目中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 // 太强了的更多相关文章
- FZYZ-2071 A Simple Math Problem IX
P2071 -- A Simple Math Problem IX 时间限制:1000MS 内存限制:262144KB 状态:Accepted 标签: 数学问题-博弈论 ...
- hdu 1757 A Simple Math Problem (乘法矩阵)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU1757 A Simple Math Problem 矩阵快速幂
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu------(1757)A Simple Math Problem(简单矩阵快速幂)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- A Simple Math Problem(矩阵快速幂)(寒假闭关第一题,有点曲折啊)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU 1757 A Simple Math Problem (矩阵快速幂)
题目 A Simple Math Problem 解析 矩阵快速幂模板题 构造矩阵 \[\begin{bmatrix}a_0&a_1&a_2&a_3&a_4&a ...
- HDU 1757 A Simple Math Problem(矩阵)
A Simple Math Problem [题目链接]A Simple Math Problem [题目类型]矩阵快速幂 &题解: 这是一个模板题,也算是入门了吧. 推荐一个博客:点这里 跟 ...
- HDU 1757 A Simple Math Problem (矩阵乘法)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- hdu 5974 A Simple Math Problem
A Simple Math Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
随机推荐
- Introduction to Cryto & Crptocurrencies Lecture 1
Lecture 1.2 Hash Pointer & Data Structure Use Case 1. 什么是Block Chain呢? 想象一个像链表一样的结构,只不过与通常的指向下一块 ...
- IDEA教程之导入maven项目
通过从网上的开源项目下载源码,一般都是maven管理的项目,此类项目可以通过导入快捷运行项目,如图为下载的一个项目: 2 打开IDEA,点击第二个选项“Import Porject”,然后选择源码根目 ...
- 首席科学家马丁•福勒(Martin Fowler)
现任思特沃克公司首席科学家的马丁·福勒先生是当今世界软件开发领域最具影响力的五位大师之一.作为一位敏捷软件开发方法的早期开拓者,福勒先生对IT 业的影响是不可估量的. 思特沃克公司是一家跨国专业IT ...
- WPF实现DoEvents
WPF实现DoEvents 原创 2011年06月30日 12:23:00 标签: wpf / object 2550 static void DoEvents() { DispatcherFrame ...
- C++标准异常概述
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- C/C++知识补充(2) C/C++操作符/运算符的优先级 & 结合性
, 逗号操作符 for( i = 0, j = 0; i < 10; i++, j++ ) ... 从左到右 Precedence Operator Description Example ...
- 自定义AXI-IP核(转)
目的: 自定义一个IP核,通过AXI总线与ARM系统连接 环境: Win7 32bit Vivado2014.4.1 Xilinx sdk2014.4 开发板: Zc702 第一步: 新建一个自定义的 ...
- 一个简单的JSP程序示例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- 玩转X-CTR100 l STM32F4 l DAC数字模拟转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 DAC接口 ...
- synchronized(六)
package com.bjsxt.base.sync006;/** * 锁对象的改变问题 * @author alienware * */public class ChangeLock { priv ...