题目描述
给你一个数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 ",f[n]); } return 0; }