题目描述

给你一个数n,xry111希望知道1-n 中有几个数可以整除n。
1<=n<=5000000

 

输入

多组数据,第一行为数据组数T(T<600),每组一行一个数n。

 

输出

每组输出一行一个数。

--正文
想也没想直接筛了水过,
一看其他人的提交都好快,果然t太少了,直接暴力枚举到sqrt(n)就好
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
#define SIZE 5000001
int f[SIZE+1];
int main(){
    int i,j;
    memset(f,sizeof(f),0); 
    for (i=1;i<=SIZE;i++){
        for (j=1;j*i<=SIZE;j++){
            f[j*i] ++;
        }
    } 
    int n;
    int time,T;
    scanf("%d",&T);
    for (time=1;time<=T;time++){
        scanf("%d",&n);
        printf("%d\n",f[n]);
    }
    return 0;
}

 

 
posted on 2016-12-05 19:36  Crutain  阅读(212)  评论(0)    收藏  举报