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|数论|约数|枚举的主要内容,如果未能解决你的问题,请参考以下文章