PASS486|数论|约数|枚举

Posted saitoasuka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PASS486|数论|约数|枚举相关的知识,希望对你有一定的参考价值。

PASS486|数论|约数|枚举

Problem

技术图片

分析

超级大水题,而且时间给的还是5s(???),书上给的难度还是中(???)。

枚举倍数base,枚举每个数i,每次增加base,枚举到的i的个数就+1。

Code

#include <cstdio>
#include <iostream>
using namespace std;
void read(int &n){
    int num=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        num=num*10+ch-'0';
        ch=getchar();
    }
    n=num*w;
}
const int maxn=1e7+5;
int c,n,s,e,k,num[maxn];
void init(){
    for(int base=1;base<=maxn;base++)//枚举倍数 
        for(int i=base;i<=maxn;i+=base)
            num[i]++;
}
int main(){
    init();
    read(c);
    while(c--){
        read(n);read(s);read(e);
        k=0;
        for(s;s<=e;s++) if(num[s]==n) k++;
        printf("%d
",k);
    }
    return 0;
}

以上是关于PASS486|数论|约数|枚举的主要内容,如果未能解决你的问题,请参考以下文章

Fear Factoring(数论,除法分块)

Fear Factoring(数论,除法分块)

Fear Factoring(数论,除法分块)

Fear Factoring(数论,除法分块)

1.29数论课笔记

JZYZOJ1379天才的约数和 数论 约数和